#### 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);
}
}
~~~
- 欢迎使用swoolefy
- 环境说明
- 开发部署
- 安装
- 创建应用
- 启动|停止服务
- nginx代理
- 创建Controller
- 应用结构
- App应用对象
- Event请求处理
- 超全局管理
- 热更新
- inotify实现worker进程热重启
- http服务
- 应用层配置
- 协议层配置
- 路由规则
- 控制器
- 数据模型
- websocket服务
- 应用层配置
- 协议层配置
- 数据封装格式
- 控制器
- 数据模型
- 二进制数据处理
- rpc服务
- 应用层配置
- 协议程配置
- 数据包协议格式
- 服务控制器
- 服务数据模型
- udp服务
- 应用层配置
- 协议层配置
- 数据包封装格式
- 控制器
- 存在问题
- 常用组件
- log
- view
- session
- cache(redis)
- db(mysql)
- mongodb
- 其他服务管理
- 自定义进程管理
- 异步任务管理
- 内存表管理
- 定时器管理
- 异常捕捉处理
- 进程池管理
- systerm采集进程服务