2) { $sErr = 'Error of format for string assigning period'; break; } if (count($aParam) == 2 && is_numeric($aParam[1])) $iStep = $aParam[1]; $sPeriod = $aParam[0]; if ($sPeriod != '*') { $aParam = split('-', $sPeriod); if (count($aParam) > 2) { $sErr = 'Error of format for string assigning period'; break; } if (count($aParam) == 2) $aRes = getRange($aParam[0], $aParam[1], $iStep); else $aRes = split(',', $sPeriod); } else $aRes = getRange($iLow, $iHigh, $iStep); } while(false); if ($sErr) { // show error or add to log } return $aRes; } function checkCronJob($sPeriods) { $aParam = split(' ', ereg_replace(" +", ' ', trim($sPeriods))); $bRes = true; $aDate = getdate(time()); for ($i = 0; $i < count($aParam); $i++) { switch ($i) { case 0: $aRes = getPeriod($aParam[$i], 0, 59); $bRes = in_array($aDate['minutes'], $aRes); break; case 1: $aRes = getPeriod($aParam[$i], 0, 23); $bRes = in_array($aDate['hours'], $aRes); break; case 2: $aRes = getPeriod($aParam[$i], 1, 31); $bRes = in_array($aDate['mday'], $aRes); break; case 3: $aRes = getPeriod($aParam[$i], 1, 12); $bRes = in_array($aDate['mon'], $aRes); break; case 4: $aRes = getPeriod($aParam[$i], 0, 6); $bRes = in_array($aDate['wday'], $aRes); break; } if (!$bRes) break; } return $bRes; } function runJob($aJob) { if(!empty($aJob['file']) && !empty($aJob['class']) && file_exists(BX_DIRECTORY_PATH_ROOT . $aJob['file'])) { if(!class_exists($aJob['class'])) require_once(BX_DIRECTORY_PATH_ROOT . $aJob['file']); $oHandler = new $aJob['class'](); $oHandler->processing(); } else if(!empty($aJob['eval'])) { require_once( BX_DIRECTORY_PATH_CLASSES . 'BxDolService.php'); eval($aJob['eval']); } } $oDb = new BxDolDb(); $aJobs = $oDb->fromCache('sys_cron_jobs', 'getAll', 'SELECT * FROM `sys_cron_jobs`'); foreach ($aJobs as $aRow) { if (checkCronJob($aRow['time'])) runJob($aRow); } ?>