#### 定時器處理
`Swoolefy\Core\Timer\TickManager`作為定時器管理類
1、循環定時器
~~~
TickManager::getInstance()->tickTimer($time_interval, $func, $params = null)
~~~
例如,創建一個循環定時器,返回定時$timer_id
~~~
$timer_id = TickManager::getInstance()->tickTimer(5000, ['App\Tick\TickController', 'test'], $params = '循環定時器')
~~~
定時器處理程序,其實就是創建一個應用對象處理。建議定時器處理程序在自定進程中使用
~~~
<?php
namespace App\Init;
use Swoolefy\Core\Swfy;
use Swoolefy\Core\StartInit;
use Swoolefy\Core\Process\ProcessManager;
class Init extends StartInit {
public function onInit() {
// 創建一個測試自定義進程
ProcessManager::getInstance()->addProcess('test', \App\Process\TestProcess\Test::class);
// 創建一個定時器處理進程
ProcessManager::getInstance()->addProcess('tick', \App\Process\TickProcess\Tick::class);
}
/**
* onWorkerStart
* @param $server
* @return
*/
public function onWorkerStart($server,$worker_id) {}
}
~~~
`App\Process\TickProcess\Tick`定義的自定義進程處理類,必須繼承`Swoolefy\Core\Process\AbstractProcess`
~~~
<?php
namespace App\Process\TickProcess;
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 Tick extends AbstractProcess {
public $SwooleProcessHander;
public function run(Process $process) {
// 協議層配置
// $conf = Swfy::getConf();
// var_dump($conf);
// 創建定時器處理實例
TickManager::getInstance()->tickTimer(3000, ['App\Process\TickProcess\TickTestController','ticktest'], ['fffff']);
}
public function onReceive($str, ...$args) {
// 測試退出進程,退出后,底層重新拉起一個新的進程
// $process = $this->getProcess();
// $process->kill($process->pid, SIGTERM);
// $process->wait();
}
public function onShutDown() {}
public function __get($name) {
return Application::$app->$name;
}
}
~~~
`TickManager::getInstance()->tickTimer(3000, ['App\Process\TickProcess\TickTestController','ticktest'], '定時器測試');`
這一行就是在自定義進程中創建定時任務處理實例,`App\Process\TickProcess\TickTestController`定時任務處理類,必須繼承`Swoolefy\Core\Process\ProcessController`,例如:
~~~
<?php
namespace App\Process\TickProcess;
use Swoolefy\Core\Application;
use Swoolefy\Core\Process\ProcessController;
class TickTestController extends ProcessController {
public function ticktest($data) {
var_dump($data);
var_dump('這是自定義的定時器進程');
}
}
~~~
參數$data就是定時器執行時的傳遞的參數,可以是數組或者字符串,例子中`var_dump($data)`將打印出“定時器測試”
- 歡迎使用swoolefy
- 環境說明
- 開發部署
- 安裝
- 創建應用
- 啟動|停止服務
- nginx代理
- 創建Controller
- 應用結構
- App應用對象
- Event請求處理
- 超全局管理
- 熱更新
- inotify實現worker進程熱重啟
- http服務
- 應用層配置
- 協議層配置
- 路由規則
- 控制器
- 數據模型
- websocket服務
- 應用層配置
- 協議層配置
- 數據封裝格式
- 控制器
- 數據模型
- 二進制數據處理
- rpc服務
- 應用層配置
- 協議程配置
- 數據包協議格式
- 服務控制器
- 服務數據模型
- udp服務
- 應用層配置
- 協議層配置
- 數據包封裝格式
- 控制器
- 存在問題
- 常用組件
- log
- view
- session
- cache(redis)
- db(mysql)
- mongodb
- 其他服務管理
- 自定義進程管理
- 異步任務管理
- 內存表管理
- 定時器管理
- 異常捕捉處理
- 進程池管理
- systerm采集進程服務