fghazaleh/multi-thread-manager

使用Symfony进程组件的多线程管理器

2.0.0 2023-03-24 10:06 UTC

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许可证。