/** * 运行任务 * @param $interval * @return bool */ static public function do_something($interval) { //是否设置了延时执行 // if (!empty(self::$delay)) { // foreach (self::$delay as $pid => $task) { // if (time() >= $task["start"]) { // (new Process())->create_process($task["task"]["id"], $task["task"]); // unset(self::$delay[$pid]); // } // } // } $tasks = TickTable::get_task(); if (empty($tasks)) return false; foreach ($tasks as $task) { if (isset($task["unique"]) && $task["unique"]) { if (isset(self::$unique_list[$task["id"]]) && (self::$unique_list[$task["id"]] >= $task["unique"])) { continue; } self::$unique_list[$task["id"]] = isset(self::$unique_list[$task["id"]]) ? (self::$unique_list[$task["id"]] + 1) : 0; } (new Process())->create_process($task["id"], $task); } return true; }
$tasks = TickTable::get_task();获取任务然后循环给每个任务创建一个进程这里会去判断当前是否有当前任务是否有设置了unique的任务,然后判断是否
self::$unique_list[$task["id"]] >= $task["unique"]
如果是则不去新建子进程
至于create_process这个方法就很简单了会去调用在plugin下的对应的处理类