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())); } } }