自定义进程,除了可以实现如,消息队列等普通任务外,还可以实现异步任务投递处理。
若启用数据投递处理功能,需要将成员属性$onWhile
设为false
,$sleepS
设为0
,并且实现public function read($process)
接口方法,用于接收投递的管道信息,我们通过代码来举例:
<?php
namespace box\process;
use design\AbstractProcess;
class Demo extends AbstractProcess
{
/**
* 是否需要while(true) 永久堵塞
*/
public $onWhile = false;
/**
* 等待间隔时间(毫秒) 0不堵塞
*/
public $sleepS = 0;
// 进程逻辑接口方法
public function run() {
// 该方法必须创建,但可留空
}
// 接收管道数据接口方法
public function read($process) {
// 必须使用read()接收投递的数据,就算你不使用该数据,否则Swoole底层会堵塞进程。
$data = $process->read();
// 你的业务代码...
}
}
使用自定义进程的write()
方法,可以对某个自定义进程投递数据,该方法自定义进程时不需要创建,基础类中也禁止了重写,我们通过代码来举例:
<?php
// 向\box\process\Demo自定义进程投递数据
var_dump(\box\process\Demo::write('SW-X 真棒!'));
该方法,成功返回发送的字节数
,失败返回false
。