jacknoordhuis / threaded-class-loader
一个线程安全的PSR-0, PSR-4和classmap类加载器实现,用于与pthreads扩展一起使用。
0.0.2
2019-02-12 04:32 UTC
Requires
- php: >=7.1
- ext-pthreads: *
Requires (Dev)
- phpunit/phpunit: ^8
This package is auto-updated.
Last update: 2024-09-12 19:08:30 UTC
README
一个线程安全的PSR-0, PSR-4和classmap类加载器实现,用于与pthreads扩展一起使用!
拥有一个中央线程安全类加载器的核心优势是,可以在任何线程中将新类注册到加载器中,当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)找到。__