apolinux / processmanager
该软件包最新版本(v0.20)没有可用的许可证信息。
使用PHP编写的系统进程管理器
v0.20
2020-03-23 18:32 UTC
Requires
- pda/pheanstalk: ^4.0
This package is auto-updated.
Last update: 2024-09-24 05:05:44 UTC
README
使用PHP编写的进程管理器
通过队列控制子进程池并向它们发送消息。此版本首先使用beanstalk进行进程通信。
有一个任务通过队列向子进程发送数据。其他进程从队列中读取此数据并进行处理。
主循环等待子进程完成以结束脚本。
示例
使用示例
<?php
use ProcessManager\Beanstalk;
use ProcessManager\QueueManager;
require_once __DIR__ . '/../vendor/autoload.php' ;
$beanstalk = new Beanstalk(['host' => 'localhost']);
$beanstalk->setTube("send-msgs");
$beanstalk->clearTube();
$beanstalk->clearConn();
$queuemngr = new QueueManager($beanstalk) ;
// consumer job
$callable_task = function($queue, $cont){
for($cont=1; $cont<=4; $cont++){
$msg = $queue->readMsg();
echo "in task $cont. msg: $msg\n" ;
}
};
$num_tasks= 3;
for($cont=1 ; $cont<=$num_tasks; $cont++){
$queuemngr->addTask( $callable_task , [$cont] );
}
// in producer job, send info to children using queue
$queuemngr->addTask(function($queuemngr){
$msg_pending = explode(" ","El amor es como la vida y la naturaleza lo es todo") ;
foreach($msg_pending as $msg) {
$queuemngr->sendMsg($msg);
}
});
// fork and run tasks
$queuemngr->run();