Пример #1
0
 static function runScript($cli, $scriptFile)
 {
     $scriptMutex = new eZMutex($scriptFile);
     $lockTS = $scriptMutex->lockTS();
     $runScript = false;
     $maxTime = self::maxScriptExecutionTime();
     if ($lockTS === false) {
         if ($scriptMutex->lock()) {
             $scriptMutex->setMeta('pid', getmypid());
             $runScript = true;
         } else {
             $cli->error('Failed to aquire cronjob part lock: ' . $scriptFile);
         }
     } else {
         if ($lockTS < time() - 2 * $maxTime) {
             $cli->output('Forcing to steal the mutex lock: ' . $scriptFile);
             $runScript = eZRunCronjobs::stealMutex($cli, $scriptMutex, true);
         } else {
             if ($lockTS < time() - $maxTime) {
                 $cli->output('Trying to steal the mutex lock: ' . $scriptFile);
                 $runScript = eZRunCronjobs::stealMutex($cli, $scriptMutex);
             } else {
                 $cli->output('Cronjob part locked by other process: ' . $scriptMutex->meta('pid'));
             }
         }
     }
     if ($runScript) {
         global $script;
         global $isQuiet;
         global $cronPart;
         include $scriptFile;
         $scriptMutex->unlock();
     }
 }
    foreach ($scriptDirectories as $scriptDirectory) {
        $scriptFile = $scriptDirectory . '/' . $cronScript;
        if (file_exists($scriptFile)) {
            break;
        }
    }
    if (file_exists($scriptFile)) {
        if ($index > 0) {
            $cli->output();
        }
        if (!$isQuiet) {
            $startTime = new eZDateTime();
            $cli->output('Running ' . $cli->stylize('emphasize', $scriptFile) . ' at: ' . $startTime->toString(true));
        }
        eZDebug::addTimingPoint("Script {$scriptFile} starting");
        eZRunCronjobs::runScript($cli, $scriptFile);
        eZDebug::addTimingPoint("Script {$scriptFile} done");
        ++$index;
        // The transaction check
        $transactionCounterCheck = eZDB::checkTransactionCounter();
        if (isset($transactionCounterCheck['error'])) {
            $cli->error($transactionCounterCheck['error']);
        }
        if (!$isQuiet) {
            $endTime = new eZDateTime();
            $cli->output('Completing ' . $cli->stylize('emphasize', $scriptFile) . ' at: ' . $endTime->toString(true));
            $elapsedTime = new eZTime($endTime->timeStamp() - $startTime->timeStamp());
            $cli->output('Elapsed time: ' . sprintf('%02d:%02d:%02d', $elapsedTime->hour(), $elapsedTime->minute(), $elapsedTime->second()));
        }
    }
}