コード例 #1
0
ファイル: Process.php プロジェクト: thezawad/vakuum
 public static function processTaskQueue()
 {
     set_time_limit(0);
     ignore_user_abort(1);
     $db = BFL_Database::getInstance();
     $lock_tables = array(DB_TABLE_JUDGER . ' write', DB_TABLE_RECORD . ' write', DB_TABLE_RECORDMETA . ' write', DB_TABLE_PROB . ' read');
     $db->lock($lock_tables, true);
     //Get Available Judger
     $judger = MDL_Judger_Set::getAvailableJudger();
     if ($judger == NULL) {
         $db->unlock();
         return 'nojudger';
     }
     $judger_id = $judger->getID();
     $task = self::getTask();
     if (!$task) {
         $db->unlock();
         return 'notask';
     }
     //Pend task
     MDL_Judge_Record::pend($task['record_id'], $judger_id);
     //lock judger
     $judger->lock();
     $db->unlock();
     //upload source
     $task['src_name'] = self::getSrcname($task['task_name'], $task['language']);
     MDL_Judger_Transmit::sendTask($judger, $task['task_name'], $task['source'], $task['src_name']);
     //send judge request
     $config = MDL_Config::getInstance();
     MDL_Judger_Access::sendRequest($judger, $task);
 }
コード例 #2
0
ファイル: judger.php プロジェクト: thezawad/vakuum
 public function ACT_connect()
 {
     $judger_id = (int) $this->path_option->getPathSection(2);
     if ($judger_id != 0) {
         $judger = new MDL_Judger($judger_id);
         $state = MDL_Judger_Access::getState($judger);
     } else {
         $this->notFound(array('specifier' => 'judger'));
     }
     $this->view->state = $state;
     $this->view->display('judger/connect.php');
 }
コード例 #3
0
ファイル: Single.php プロジェクト: thezawad/vakuum
 public static function stop($record_id)
 {
     $record = new MDL_Record($record_id);
     $judger_id = $record->getJudger()->getID();
     $record_meta = $record->getInfo()->getRecordMeta();
     $status = $record_meta->getVar('status');
     if ($status == MDL_Judge_Record::STATUS_STOPPED) {
         return;
     }
     $record_meta->setVar('status', MDL_Judge_Record::STATUS_STOPPED);
     $record_meta->setVar('result_text', MDL_Judge_Record::RESULT_EXECUTOR_ERROR);
     $task_name = $record->getTaskName();
     if ($judger_id != 0) {
         MDL_Judger_Access::stopJudge($task_name, $record->getJudger());
         if ($status != MDL_Judge_Record::STATUS_WAITING) {
             $record->getJudger()->unlock();
         }
     }
 }