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);
};
Free Web Hosting