Example #1
0
 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);
 }
Example #2
0
 public function writeRecord($rs)
 {
     $info = $rs['info'];
     $info['record_id'] = $_GET['record_id'];
     switch ($rs['type']) {
         case 'compile':
             MDL_Judge_Record::recordCompile($info);
             break;
         case 'execute':
             MDL_Judge_Record::recordExecute($info);
             break;
         case 'complete':
             MDL_Judge_Record::recordComplete($info);
             break;
         default:
     }
 }
Example #3
0
 public static function rejudgeSingle($record_id)
 {
     MDL_Judge_Record::resetRecord($record_id);
     MDL_Judger_Process::processTaskQueue();
 }