/**
  * @see parent::onAfterMain()
  */
 function onAfterMain()
 {
     $cron_log_id = CValue::get("execute_cron_log_id");
     if (!$cron_log_id) {
         return;
     }
     //Mise à jour du statut du log suite à l'appel au script
     $cron_log = new CCronJobLog();
     $cron_log->load($cron_log_id);
     if (CCronJobLog::$log) {
         $cron_log->status = "error";
         $cron_log->error = CCronJobLog::$log;
         $cron_log->end_datetime = CMbDT::dateTime();
     } else {
         $cron_log->status = "finished";
         $cron_log->end_datetime = CMbDT::dateTime();
     }
     $cron_log->store();
 }
示例#2
0
$now = CMbDT::dateTime();
$cronjob = new CCronJob();
$cronjob->active = "1";
/** @var CCronJob[] $cronjobs */
$cronjobs = $cronjob->loadMatchingList();
$server_addr = get_server_var("SERVER_ADDR");
//Parcours des tâches actives
foreach ($cronjobs as $_cronjob) {
    if ($_cronjob->_servers && !in_array($server_addr, $_cronjob->_servers)) {
        continue;
    }
    //Récupération de la prochaine date d'éxécution
    $next = $_cronjob->getNextDate(1);
    $next = current($next);
    $tolerance = CMbDT::dateTime("+ 5 SECOND", $next);
    //On vérifie si le script doit être éxécuté
    if ($next <= $now && $now <= $tolerance) {
        //Log d'attente
        $cronjob_log = new CCronJobLog();
        $cronjob_log->start_datetime = $now;
        $cronjob_log->cronjob_id = $_cronjob->_id;
        $cronjob_log->status = "started";
        $cronjob_log->server_address = $server_addr;
        $cronjob_log->store();
        $_cronjob->_params["execute_cron_log_id"] = $cronjob_log->_id;
        //Lancement du processus fils pour éxécuter la requête
        $url = escapeshellarg($_cronjob->makeUrl());
        //pclose(popen("start /SEPARATE wget.exe $url -qO NUL", "r"));
        exec("wget -q {$url} &> /dev/null");
    }
}