/** * Returns an instance of class (singleton pattern implementation). * * @return BOL_CronService */ public static function getInstance() { if (self::$classInstance === null) { self::$classInstance = new self(); } return self::$classInstance; }
$plugins = BOL_PluginService::getInstance()->findActivePlugins(); foreach ($plugins as $plugin) { /* @var $plugin BOL_Plugin */ $pluginRootDir = OW::getPluginManager()->getPlugin($plugin->getKey())->getRootDir(); if (file_exists($pluginRootDir . DS . 'cron.php')) { include $pluginRootDir . DS . 'cron.php'; $className = strtoupper($plugin->getKey()) . '_Cron'; $cron = new $className(); $runJobs = array(); $newRunJobDtos = array(); foreach (BOL_CronService::getInstance()->findJobList() as $runJob) { /* @var $runJob BOL_CronJob */ $runJobs[$runJob->methodName] = $runJob->runStamp; } $jobs = $cron->getJobList(); foreach ($jobs as $job => $interval) { $methodName = $className . '::' . $job; $runStamp = isset($runJobs[$methodName]) ? $runJobs[$methodName] : 0; $currentStamp = time(); if ($currentStamp - $runStamp > $interval * 60) { $runJobDto = new BOL_CronJob(); $runJobDto->methodName = $methodName; $runJobDto->runStamp = $currentStamp; $newRunJobDtos[] = $runJobDto; BOL_CronService::getInstance()->batchSave($newRunJobDtos); $newRunJobDtos = array(); $cron->{$job}(); } } } }