BUG 9630 "cron.php script can have several instances running..." SOLVED
- cron.php script can have several instances running at the same time - Problem solved, added validation in cron.php script to avoid run several times * Available from version 2.0.44
This commit is contained in:
@@ -52,51 +52,56 @@ define ('MEMCACHED_ENABLED', $config['memcached']);
|
|||||||
define ('MEMCACHED_SERVER', $config['memcached_server']);
|
define ('MEMCACHED_SERVER', $config['memcached_server']);
|
||||||
define ('TIME_ZONE', $config['time_zone']);
|
define ('TIME_ZONE', $config['time_zone']);
|
||||||
|
|
||||||
//default values
|
//Default values
|
||||||
$bCronIsRunning = false;
|
$bCronIsRunning = false;
|
||||||
$sLastExecution = '';
|
$sLastExecution = null;
|
||||||
if ( file_exists(PATH_DATA . 'cron') ) {
|
|
||||||
$aAux = unserialize( trim( @file_get_contents(PATH_DATA . 'cron')) );
|
if (file_exists(PATH_DATA . "cron")) {
|
||||||
$bCronIsRunning = (boolean)$aAux['bCronIsRunning'];
|
$arrayAux = unserialize(trim(@file_get_contents(PATH_DATA . "cron")));
|
||||||
$sLastExecution = $aAux['sLastExecution'];
|
$bCronIsRunning = (boolean)($arrayAux["bCronIsRunning"]);
|
||||||
}
|
$sLastExecution = $arrayAux["sLastExecution"];
|
||||||
else {
|
|
||||||
//if not exists the file, just create a new one with current date
|
|
||||||
@file_put_contents(PATH_DATA . 'cron', serialize(array('bCronIsRunning' => '1', 'sLastExecution' => date('Y-m-d H:i:s'))));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$WS = '';
|
if (!$bCronIsRunning) {
|
||||||
$argsx = '';
|
//Start cron
|
||||||
$sDate = '';
|
$arrayAux = array("bCronIsRunning" => "1", "sLastExecution" => date("Y-m-d H:i:s"));
|
||||||
|
@file_put_contents(PATH_DATA . "cron", serialize($arrayAux));
|
||||||
|
|
||||||
|
//Data
|
||||||
|
$ws = null;
|
||||||
|
$argsx = null;
|
||||||
|
$sDate = null;
|
||||||
$dateSystem = date("Y-m-d H:i:s");
|
$dateSystem = date("Y-m-d H:i:s");
|
||||||
|
|
||||||
for ($i = 1; $i <= count($argv) - 1; $i++) {
|
for ($i = 1; $i <= count($argv) - 1; $i++) {
|
||||||
if( strpos($argv[$i], '+d') !== false){
|
if (strpos($argv[$i], "+d") !== false) {
|
||||||
$sDate = substr($argv[$i],2);
|
$sDate = substr($argv[$i],2);
|
||||||
} else if( strpos($argv[$i], '+w') !== false){
|
|
||||||
$WS = substr($argv[$i],2);
|
|
||||||
} else {
|
} else {
|
||||||
$argsx .= ' '.$argv[$i];
|
if (strpos($argv[$i], "+w") !== false) {
|
||||||
|
$ws = substr($argv[$i], 2);
|
||||||
|
} else {
|
||||||
|
$argsx = $argsx . " " . $argv[$i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//if $sDate is not set, so take the system time
|
//If $sDate is not set, so take the system time
|
||||||
if ($sDate != "") {
|
if ($sDate != null) {
|
||||||
eprintln("[Applying date filter: $sDate]");
|
eprintln("[Applying date filter: $sDate]");
|
||||||
} else {
|
} else {
|
||||||
$sDate = $dateSystem;
|
$sDate = $dateSystem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($ws == null) {
|
||||||
if( $WS=='' ){
|
|
||||||
$oDirectory = dir(PATH_DB);
|
$oDirectory = dir(PATH_DB);
|
||||||
$cws = 0;
|
$cws = 0;
|
||||||
while($sObject = $oDirectory->read()) {
|
|
||||||
if (($sObject != '.') && ($sObject != '..')) {
|
|
||||||
if (is_dir(PATH_DB . $sObject)) {
|
|
||||||
|
|
||||||
if (file_exists(PATH_DB . $sObject . PATH_SEP . 'db.php')) {
|
while($sObject = $oDirectory->read()) {
|
||||||
$cws++;
|
if (($sObject != ".") && ($sObject != "..")) {
|
||||||
|
if (is_dir(PATH_DB . $sObject)) {
|
||||||
|
if (file_exists(PATH_DB . $sObject . PATH_SEP . "db.php")) {
|
||||||
|
$cws = $cws + 1;
|
||||||
|
|
||||||
system("php -f \"".dirname(__FILE__).PATH_SEP."cron_single.php\" $sObject \"$sDate\" \"$dateSystem\" $argsx", $retval);
|
system("php -f \"".dirname(__FILE__).PATH_SEP."cron_single.php\" $sObject \"$sDate\" \"$dateSystem\" $argsx", $retval);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -104,7 +109,16 @@ if( $WS=='' ){
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$cws = 1;
|
$cws = 1;
|
||||||
system("php -f \"".dirname(__FILE__).PATH_SEP."cron_single.php\" $WS \"$sDate\" \"$dateSystem\" $argsx", $retval);
|
|
||||||
}
|
system("php -f \"".dirname(__FILE__).PATH_SEP."cron_single.php\" $ws \"$sDate\" \"$dateSystem\" $argsx", $retval);
|
||||||
eprintln("Finished $cws workspaces processed.");
|
}
|
||||||
|
|
||||||
|
//End cron
|
||||||
|
$arrayAux = array("bCronIsRunning" => "0", "sLastExecution" => date("Y-m-d H:i:s"));
|
||||||
|
@file_put_contents(PATH_DATA . "cron", serialize($arrayAux));
|
||||||
|
|
||||||
|
eprintln("Finished $cws workspaces processed.");
|
||||||
|
} else {
|
||||||
|
eprintln("The cron is running, please wait for it to finish.\n- Started in $sLastExecution");
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -97,21 +97,6 @@ require_once ("classes/model/AppEvent.php");
|
|||||||
require_once ("classes/model/CaseScheduler.php");
|
require_once ("classes/model/CaseScheduler.php");
|
||||||
//G::loadClass("pmScript");
|
//G::loadClass("pmScript");
|
||||||
|
|
||||||
//default values
|
|
||||||
$bCronIsRunning = false;
|
|
||||||
$sLastExecution = '';
|
|
||||||
|
|
||||||
if (file_exists(PATH_DATA . 'cron')) {
|
|
||||||
$arrayAux = unserialize(trim(@file_get_contents(PATH_DATA . 'cron')));
|
|
||||||
$bCronIsRunning = (boolean)($arrayAux['bCronIsRunning']);
|
|
||||||
$sLastExecution = $arrayAux['sLastExecution'];
|
|
||||||
} else {
|
|
||||||
//if not exists the file, just create a new one with current date
|
|
||||||
$arrayAux = array('bCronIsRunning' => '1', 'sLastExecution' => date('Y-m-d H:i:s'));
|
|
||||||
|
|
||||||
@file_put_contents(PATH_DATA . 'cron', serialize($arrayAux));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!defined('SYS_SYS')) {
|
if (!defined('SYS_SYS')) {
|
||||||
$sObject = $argv[1];
|
$sObject = $argv[1];
|
||||||
$sNow = $argv[2];
|
$sNow = $argv[2];
|
||||||
@@ -221,9 +206,9 @@ if (!defined('SYS_SYS')) {
|
|||||||
processWorkspace();
|
processWorkspace();
|
||||||
}
|
}
|
||||||
|
|
||||||
//finally update the file
|
|
||||||
$arrayAux = array('bCronIsRunning' => '0', 'sLastExecution' => date('Y-m-d H:i:s'));
|
|
||||||
@file_put_contents(PATH_DATA . 'cron', serialize($arrayAux));
|
|
||||||
|
|
||||||
function processWorkspace()
|
function processWorkspace()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user