定时任务我们需要先使用rap启动一个定时任务服务器 配置 ~~~ 'app'=>[ 'init'=>\rap\swoole\timer\TimerInit::class //配置为 TimerInit ], 'swoole_http'=>[ //http 服务不能少 'ip'=>'0.0.0.0', 'port'=>9501, 'document_root'=>ROOT_PATH, 'enable_static_handler'=>false, 'worker_num'=>20, 'task_worker_num'=>0, 'task_max_request'=>0 ], 'timer'=>[ 'secret'=>'这是通信密钥' ], 'cache'=>[ //配置缓存 只可以使用redis 'type'=>'redis', 'host' => '', 'port' => , 'password' => '', 'select' => 1, 'timeout' => 0, 'expire' => -1, 'persistent' => false ] ~~~ 启动服务器 ~~~ php index.php http ~~~ 主项目中 配置 ~~~ 'timer'=>[ 'local'=>'local.net', //当前应用域名 'server'=>'server.net', //定时服务器域名 'secret'=>'这是通信密钥' //两边需要相同 ] ~~~ 使用 ~~~ //参数说明 路径, 参数, 多久之后单位 s,请求时带的请求头 Timer::after('/test/a',['a'=>'1'],10,['tent-header'=>'test']); ~~~ 回调方法里需要进行签名验证 防止恶意调用 ~~~ Timer::checkSign($request); ~~~ > 为什么需要将定时器独立出来? > > 主项目的经常会进行重启,正常缓存也是不需要进行持久化的,可以在特定时候清除全部缓存,而我们不希望这些操作会影响已添加好的定时器 > 定时服务器重启时会对对之前没有执行的定时器进行重新加载