#### 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采集進程服務