function run($id = 0) { $this->setID($id); $sql = "SELECT * FROM " . TABLE_PREFIX . 'task' . " WHERE " . ($this->ID ? "id='{$this->ID}'" : "available>'0' AND nextrun<='{$this->timestamp}'") . " order by nextrun LIMIT 1"; $query = $this->DatabaseHandler->Query($sql); if ($task = $query->GetRow()) { $this->task = $task; $lock = jconf::get('task', 'lock'); $task['filename'] = str_replace(array('..', '/', '\\'), '', $task['filename']); $taskfile = './include/ext/task/' . $task['filename']; if ($lock > $this->timestamp - 600) { return null; } else { jconf::set('task', 'lock', time()); } @ignore_user_abort(true); $task['filename'] = str_replace(array('..', '/', '\\'), array('', '', ''), $task['filename']); $task['minute'] = explode("\t", $task['minute']); $this->nextRun($task); if (!(include_once $taskfile)) { $this->log("计划任务 {$task['name']} 文件 {$taskfile} 已经不存在", E_USER_ERROR, 0); } else { $log_id = $this->log("执行超时,请检查任务脚本。", E_USER_ERROR, 0); list($usec, $sec) = explode(" ", microtime()); $start = (double) $usec + (double) $sec; $TaskItem = new TaskItem(); $TaskItem->run(); list($usec, $sec) = explode(" ", microtime()); $exec_time = (double) $usec + (double) $sec - $start; $this->logUpdate($log_id, $TaskItem->log['message'], $TaskItem->log['error'], $exec_time); } @jconf::set('task', 'lock', 0); } $this->writeNextRunTime(); }
public function modifyPost($request, $response) { $taskItemId = $request->taskItemId; $taskItem = TaskItem::getById($taskItemId); DBC::requireTrue($taskItem instanceof TaskItem,"任务项 {$taskItemId} 不存在"); UsecaseClient::getInstance()->modifyTaskItem($taskItem->id,$request->result,$request->bugInfo); $taskItem = DAL::get()->find('taskitem', $taskItemId,true); $preMsg = "{$taskItem->usecase->id} 执行结果:{$taskItem->resultDesc}"; $response->setRedirect($response->router->urlfor('taskitem/next',array('preTaskItemId'=>$taskItem->id,'preMsg'=>$preMsg))); }