自定义进程的public function run()
接口方法,默认是只会执行一次。
如果需要循环执行,则需要使用while
等循环语句控制,为此框架提供了Whlie自动化的支持。
通过设置$onWhile
、$sleepS
成员属性,来控制循环开启和下一次的等待间隔时间。
Whlie自动化一般适用于一些消息队列类的业务,如果你不需要启动框架支持的While支持,还可以自己在public function run()
接口方法中编写循环语句实现,我们通过代码来举例:
<?php
namespace box\process;
use design\AbstractProcess;
class Demo extends AbstractProcess
{
/**
* 是否需要while(true) 永久堵塞
*/
public $onWhile = true;
/**
* 等待间隔时间(毫秒) 0不堵塞
*/
public $sleepS = 1000;
// 进程逻辑接口方法
public function run() {
$Redis = new \x\Redis();
// 读取一条队列信息
$info = $Redis->LPOP();
}
}
警告:自定义进程中若实现了循环消费后,数据投递功能将无法使用,因为框架底层是在进程末尾监听的数据投递逻辑,如果逻辑中使用了whlie(true)
,理论上是无法到达进程末尾。