Producer类
此类扮演的是生产器的角色,以下列举的是其常用的回调API以及普通API。
onProducerStart
参数
@param object $producer 代表 producer 实例
含义
1. 设置Producer子进程启动时的回调函数,每个子进程启动时都会执行。
2. 回调属性 onProducerStart 是在子进程启动时运行的,总共会运行 $producer->count 次。
举例
<?php
use PHPCreeper\Producer;
$producer = new Producer;
$producer->onProducerStart = function($producer){
echo "{$producer->id}号生产器进程启动成功";
};
onProducerStop
参数
@param object $producer 代表 producer 实例
含义
1. 设置Producer子进程退出时的回调函数,每个子进程退出时都会执行。
2. 回调属性 onProducerStop 是在子进程停止时运行的,总共会运行 $producer->count 次。
举例
<?php
use PHPCreeper\Producer;
$producer = new Producer;
$producer->onProducerStop = function($producer){
echo "{$producer->id}号生产器进程退出成功";
};
onProducerReload
参数
@param object $producer 代表 producer 实例
含义
此回调属性不常用到,用于设置生产器收到reload信号后执行的回调。
说明:
利用onProducerReload回调做很多事情,例如在不需要重启进程的情况下重新加载业务配置文件。
子进程收到reload信号默认的动作是退出重启,以便新进程重新加载业务代码完成代码更新。
所以reload后子进程在执行完onProducerReload回调后便立刻退出是正常现象。
如果在收到reload信号后只想让子进程执行onProducerReload而不想退出,可以在初始化
Producer实例时设置对应的Producer实例的reloadable属性为false。
举例
<?php
use PHPCreeper\Producer;
$producer = new Producer;
//设置reloadable为false,即子进程收到reload信号不执行重启。
$producer->reloadable = false;
$producer->onProducerReload = function($producer){
//some code here
};
setName ( string $name ) : object
参数
@param string $name 代表producer实例的名称,默认none。
说明
设置producer实例的名称,只能是数字或字母或组合,最多15个字符。
举例
<?php
use PHPCreeper\Producer;
$producer = new Producer;
$producer->setName('producer1');
setCount ( int $count, boolean $prepfer_by_cpu_cores = false ) : object
参数
@param int $count 代表producer实例的进程数量,默认1。
@param boolean $prepfer_by_cpu_cores 根据CPU核数自动计算最优进程数,拥有最高优先级。
说明
设置producer实例的进程数量。
举例
<?php
use PHPCreeper\Producer;
$producer = new Producer;
$producer->setCount(2); //设置启动2个进程。
$producer->setCount(1, true); //假如是4核处理器,那么将启动8个进程,此时第一个参数将被忽略。
setInterval ( float $interval = 1 ) :object
参数
@param float $interval 创建任务间隔时间,单位:秒,支持小数,最小支持0.001秒。
说明
设置创建任务的间隔时间
举例
use PHPCreeper\Producer;
$producer = new Producer;
$producer->onProducerStart = function($producer){
//每隔2秒创建一条任务
$producer->setInterval(2);
};