定制 fghazaleh/multi-thread-manager 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

fghazaleh/multi-thread-manager

最新稳定版本:2.0.0

Composer 安装命令:

composer require fghazaleh/multi-thread-manager

包简介

Multi-thread manager using Symfony process component

README 文档

README

A Library to handle a multiple Symfony process component, by creating a command which can be handled in asynchronous (threads).

Supported PHP Versions

  • PHP 7.2
  • PHP 8.0

Index

Installation

$ composer require fghazaleh/multi-thread-manager

Usage

Create instance of ThreadManager.

$threadSize = 10;
$threadManager = \FGhazaleh\MultiThreadManager\ThreadManager::create($threadSize);

or

$threadSize = 10;
$threadStartDelay = 1; //milliseconds
$pollInterval = 120; //milliseconds
$threadManager = new \FGhazaleh\MultiThreadManager\ThreadManager(
                        new \FGhazaleh\MultiThreadManager\ThreadSettings(
                            $threadSize, $threadStartDelay, $pollInterval
                        )               
                  );

or

$threadSettings = \FGhazaleh\MultiThreadManager\ThreadSettings::createFromDefault();
$threadManager = new \FGhazaleh\MultiThreadManager\ThreadManager(
                     $threadSettings              
                  );

Add threads

Add shell script command thread.

$threadManager->addThread('php -r "echo 123; exit(0);"');

Add Symfony process thread.

$process = new Symfony\Component\Process\Process('php -r "echo 123; exit(0);"');
$threadManager->addThread($process);

Add thread object.

$threadManager->addThread(
    \FGhazaleh\MultiThreadManager\Thread::createFromCommand(
        'php -r "echo 123; exit(0);"'
    )
);

Add thread with context.

$threadManager->addThread('php -r "echo 123; exit(0);"', ['data' => 'some data']);

Wait for threads

$threadManager->wait();

Terminate threads

$threadManager->terminate();

Register Events/Listeners in Thread Manager

Register event with class listener.

$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(...)

Register event closure listener function.

$threadManager->listen(
    \FGhazaleh\MultiThreadManager\Contracts\EventInterface::EVENT_STARTED, 
    function (\FGhazaleh\MultiThreadManager\Contracts\ThreadInterface $thread){
        ...
    }
);

Security Vulnerabilities

if you discover a security vulnerability within this boilerplate, please send an email to Franco Ghazaleh at franco.ghazaleh@gmail.com, or create a pull request if possible. All security vulnerabilities will be promptly addressed. Please reference this page to make sure you are up to date.

License

This project is licensed under the MIT License.

统计信息

  • 总下载量: 2.15k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 17
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 16
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-04-07