apolinux/processmanager

该软件包最新版本(v0.20)没有可用的许可证信息。

使用PHP编写的系统进程管理器

v0.20 2020-03-23 18:32 UTC

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();