jacknoordhuis/threaded-class-loader

一个线程安全的PSR-0, PSR-4和classmap类加载器实现,用于与pthreads扩展一起使用。

0.0.2 2019-02-12 04:32 UTC

This package is auto-updated.

Last update: 2024-09-12 19:08:30 UTC


README

一个线程安全的PSR-0, PSR-4和classmap类加载器实现,用于与pthreads扩展一起使用!

Build Status

拥有一个中央线程安全类加载器的核心优势是,可以在任何线程中将新类注册到加载器中,当PHP尝试从任何线程中加载类时,加载器也是注册在该线程上的,一切都将“正常工作”,因为它们共享\Threaded对象。

安装

Composer

通过命令行

$ composer require jacknoordhuis/threaded-class-loader

或将包添加到您的composer.json

{
    "require": {
        "jacknoordhuis/threaded-class-loader": "*"
    }
}

用法

以下是一个替换默认composer类加载器的基本示例

$loader = require_once "vendor/autoload.php";
$loader = jacknoordhuis\Autoload\ThreadedClassLoader::fromComposerLoader($loader);

此示例将加载composer自动加载器,以便我们的线程加载器可以加载,然后我们调用方便处理将composers映射转换为\Threaded成员的帮助方法。根据提供的额外参数,帮助方法还可以(默认情况下)注销composer加载器,并在当前线程上注册新的线程安全加载器。

现在,您可以安全地将$loader传递给新线程,并调用ThreadedClassLoader::register()方法来在新线程上加载类。

$loader = ...; //put example code from above here

class MyWorker extends \Worker {

	public $loader;

	public function __construct($loader) {
		$this->loader = $loader;
	}

	public function run() {
		$this->loader->register();

		//put your code here
	}
}

$worker = new MyWorker($loader);
$worker->start() && $worker->join();

__本仓库的内容许可协议为GNU Lesser General Public License v3。许可协议的完整副本可在[此处](LICENSE)找到。__