sinacms / multiprocess
用于PHP多进程异步任务管理的工具
1.1.4
2018-08-13 07:18 UTC
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-29 05:21:09 UTC
README
This is high performance PHP Mutilprocessing Task Manager written in PHP, compatible with PHP-FPM and CLI.
这是一个用PHP编写的高性能PHP多进程异步任务管理器,与PHP FPM和CLI兼容。
内容
特性
-
使用此工具,PHP脚本可以根据多进程异步调用,最终等待每个进程返回结果,节省大量时间。
-
优雅且高效
-
可以获取可调用函数的返回值
-
您可以通过指定phpBin参数来指定异步执行脚本的PHP路径。
-
异常处理
安装
您可以使用Composer从命令行安装此库。
composer require sinacms/multiprocess
使用
分发任务和异步执行
<?php use Mutilprocessing\Async; Async::create()->start('task.php', ['runTest'.$i]);
通过简单的函数分发任务并异步执行
!!! 警告:请勿在echo和return中插入'&&&'字符串,因为它会破坏程序运行
<?php use Mutilprocessing\Async; Async::create()->startFunc(function($param1, $param2) { echo $param1.$param2.PHP_EOL; }, ['param1' => 'hello', 'param2' => ' world']); $func = function ($param1, $param2) { echo "this is an another func"; }; Async::create()->startFunc($func, ['param1' => 'hello', 'param2' => ' PHP']);
同步等待所有进程结束
<?php use Mutilprocessing\Async; $outData = []; Async::wait(function($code, $out, $err) use(&$outData) { // var_dump($code, $out, $err); // you can handle code runtime exception like this if (strlen($err) != 0) { // do sth. } // and you can get return value like this // more function detail see examples :) array_push($outData, \Mutilprocessing\Async::getReturn($out)); });
outData结构
echos代表执行中的echo
returns代表执行中的返回值
array(4) {
[0] =>
array(2) {
'echos' =>
string(5) "hello"
'returns' =>
string(0) ""
}
[1] =>
array(2) {
'echos' =>
string(6) "KZ RNG"
'returns' =>
string(10) "return 777"
}
[2] =>
array(2) {
'echos' =>
string(17) "EDG AFSreturn 888"
'returns' =>
string(0) ""
}
[3] =>
array(2) {
'echos' =>
string(6) "SKT RW"
'returns' =>
string(10) "return 666"
}
}
getArgs从Async::start传递
// please pass $argv[1] to get args <?php use Mutilprocessing\Async; Async::getArgs($argv[1], 'key');
清除所有任务
<?php use Mutilprocessing\Async; Async::discard();
文档
-
异步
-
选项缩写
- public static function create()
- public static function start($scriptname, $args, $phpBin="", $envs = [])
- public function startFunc(callable $function, $args = [], $phpBin="")
- public static function discard()
- public static function wait(callable $logHandler = null)
- public static function getArgs($argv = null)
- public static function getReturn($out)
-
FunctionParser
-
选项缩写
- public static function genTmp(callable $function)
待办事项
- 为每次执行(进程)注册回调
- 添加多执行单元并一次性启动