框架不强制在任意位置创建自定义进程类,但建议统一存放在/box/process
目录下便于管理。
所有自定义进程类,必须继承\design\AbstractProcess
基础类,并实现public function run()
接口方法,方法内实现您的逻辑代码,我们通过代码来举例:
<?php
namespace box\process;
use design\AbstractProcess;
class Demo extends AbstractProcess
{
public function run() {
// 您的业务代码....
}
}
这样即完成了一个自定义进程类,但该自定义进程类尚未被注册到 Swoole-Server
服务中,我们可以通过 配置文件 申明来完成注册工作。
只需在/config/process.php
内加上您的自定义进程类即可:
<?php
return [
\box\process\Demo::class,
];
自定义进程存在一些可设置的参数,均可以通过 在子类上重写参数对应的属性 来进行重新定义。
以下,是\design\AbstractProcess
基础类的一些默认参数。
<?php
abstract class AbstractProcess
{
/**
* 进程名称
*/
public $name = 'diy-process';
/**
* 是否需要while(true) 永久堵塞
*/
public $onWhile = false;
/**
* 等待间隔时间(毫秒) 0不堵塞
*/
public $sleepS = 0;
/**
* 重定向自定义进程的标准输入和输出
*/
public $redirectStdinStdout = false;
/**
* 管道类型
*/
public $pipeType = 2;
/**
* 是否启用协程
*/
public $enableCoroutine = true;
}
$redirectStdinStdout
、$pipeType
、$enableCoroutine
3个参数的意义,可以参考Swoole官方文档:Swoole\Process。