🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
#### processManager管理 1、`Swoolefy\Core\Process\ProcessManager`是基于`swoole_process`封装的管理类 ~~~ /** * addProcess 添加一个进程 * @param string $processName * @param string $processClass * @param boolean $async * @param array $args */ public static function addProcess(string $processName, string $processClass, $async = true,array $args = []) ~~~ ~~~ /** * getProcessByName 通过名称获取一个进程 * @param string $processName * @return object */ public static function getProcessByName(string $processName) ~~~ ~~~ /** * getProcessByPid 通过进程id获取进程 * @param int $pid * @return object */ public static function getProcessByPid(int $pid) ~~~ ~~~ /** * writeByProcessName 向某个进程写数据 * @param string $name * @param string $data * @return boolean */ public static function writeByProcessName(string $name,string $data) ~~~ ~~~ /** * readByProcessName 读取某个进程数据 * @param string $name * @param float $timeOut * @return mixed */ public static function readByProcessName(string $name, float $timeOut = 0.1) ~~~ 2、进程处理类必须继承`Swoolefy\Core\Process\AbstractProcess` 例如在App目录下可以建立Process目录,创建一个自定义进程,自定义进程必须继承`Swoolefy\Core\Process\AbstractProcess` <table><tr><td bgcolor=orange> 特别注意: 自定义进程的处理类必须要继承Swoolefy\Core\Process\AbstractProcess </td></tr></table> ~~~ <?php namespace App\Process\TestProcess; use Swoole\Process; use Swoolefy\Core\Swfy; use Swoolefy\Core\Application; use Swoolefy\Core\Process\AbstractProcess; use Swoolefy\Core\Process\ProcessManager; use Swoolefy\Core\Process\SwooleProcess; use Swoolefy\Core\Timer\TickManager; class Test extends AbstractProcess { public $SwooleProcessHander; // 自定义进程创建成功回调 public function run(Process $process) { // 协议层配置 // $conf = Swfy::getConf(); // var_dump($conf); // 应用层配置 $app_conf = Swfy::getAppConf(); } // 自定义进程接收来自worker|task进程的数据 public function onReceive($str, ...$args) { // 测试退出进程,退出后,底层重新拉起一个新的进程 // $process = $this->getProcess(); // $process->kill($process->pid, SIGTERM); // $process->wait(); } // 进程销毁后回调 public function onShutDown() {} public function __get($name) { return Application::getApp()->$name; } } ~~~ 例如,在服务启动时,可以添加一个上面创建的Test自定义进程 ~~~ <?php namespace App\Init; use Swoolefy\Core\StartInit; use Swoolefy\Core\Process\ProcessManager; use Swoolefy\Core\Swfy; class Init extends StartInit { public function onInit() { // 添加进程 ProcessManager::getInstance()->addProcess('test', \App\Process\TestProcess\Test::class); } } ~~~