#### 定时器处理
`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采集进程服务