fghazaleh / multi-thread-manager
使用Symfony进程组件的多线程管理器
2.0.0
2023-03-24 10:06 UTC
Requires
- php: ^8.0
- symfony/process: ^6.0
Requires (Dev)
- mockery/mockery: ^1.5
- phpunit/phpunit: ^8.5
- symfony/var-dumper: ^6.0
This package is auto-updated.
Last update: 2024-09-24 13:30:13 UTC
README
一个库,用于处理多个Symfony进程组件,通过创建一个可以异步处理的命令(线程)。
支持的PHP版本
- PHP 7.2
- PHP 8.0
索引
安装
$ composer require fghazaleh/multi-thread-manager
使用
创建ThreadManager
实例。
$threadSize = 10; $threadManager = \FGhazaleh\MultiThreadManager\ThreadManager::create($threadSize);
或者
$threadSize = 10; $threadStartDelay = 1; //milliseconds $pollInterval = 120; //milliseconds $threadManager = new \FGhazaleh\MultiThreadManager\ThreadManager( new \FGhazaleh\MultiThreadManager\ThreadSettings( $threadSize, $threadStartDelay, $pollInterval ) );
或者
$threadSettings = \FGhazaleh\MultiThreadManager\ThreadSettings::createFromDefault(); $threadManager = new \FGhazaleh\MultiThreadManager\ThreadManager( $threadSettings );
添加线程
添加shell脚本命令线程。
$threadManager->addThread('php -r "echo 123; exit(0);"');
添加Symfony进程线程。
$process = new Symfony\Component\Process\Process('php -r "echo 123; exit(0);"'); $threadManager->addThread($process);
添加线程对象。
$threadManager->addThread( \FGhazaleh\MultiThreadManager\Thread::createFromCommand( 'php -r "echo 123; exit(0);"' ) );
添加带上下文的线程。
$threadManager->addThread('php -r "echo 123; exit(0);"', ['data' => 'some data']);
等待线程
$threadManager->wait();
终止线程
$threadManager->terminate();
在线程管理器中注册事件/监听器
使用类监听器注册事件。
$threadManager->listen( \FGhazaleh\MultiThreadManager\Contracts\EventInterface::EVENT_STARTED, new JobStartedListener() ); $threadManager->listen( \FGhazaleh\MultiThreadManager\Contracts\EventInterface::EVENT_FINISHED, new JobFinishedListener() ); $threadManager->listen( \FGhazaleh\MultiThreadManager\Contracts\EventInterface::EVENT_TIMEOUT, new JobTimeoutListener() ); ... $threadManager->addThread(...)
注册闭包监听器函数事件。
$threadManager->listen( \FGhazaleh\MultiThreadManager\Contracts\EventInterface::EVENT_STARTED, function (\FGhazaleh\MultiThreadManager\Contracts\ThreadInterface $thread){ ... } );
安全漏洞
如果您在此模板中发现安全漏洞,请发送电子邮件至franco.ghazaleh@gmail.com,或尽可能创建一个pull请求。所有安全漏洞都将得到及时解决。请参考此页面以确保您是最新的。
许可证
本项目采用MIT许可证。