# 初始化定时任务 这个功能也是必须的,cli方式一启动,自动去定时池中查找所有定时任务,自动添加,因为在日常运行过程中难免遇到服务器需要重启或者死机等问题,那么要是死机后所有定时没有状态保存都丢失了,或者有保存但是需要页面重新添加定时,这都是项目重大缺陷,所以这功能必不可少 其实实现起来也非常的简单,在IssServer中的onWorkerStart回调函数中找到所有需要添加的任务循环添加了就好(将添加定时抽成公共方法commonTaskDo,onReceive回调也调用这个公共方法) ~~~ public function onStart( $serv ) { echo "Start\n"; } public function onWorkerStart( $serv , $worker_id) { if($worker_id==1){ echo "onWorkerStart taskInit\n"; $taskdatas = Db::table('iss_timer')->where('status',1)->select(); foreach ($taskdatas as $v){ $this->commonTaskDo($serv, $v); } } } ~~~ 添加$worker\_id==1的判断是因为,启动服务时系统会自动启动多个worker进程,不加的话会被初始化n遍,加上这个就是选择为1的进程来做初始化的工作,其他进程就休息吧,保证只初始化一遍。