protected function _checkCanLock() { if ($this->_lock && !$this->_lock->launch(get_called_class() . '-' . $this->_config->get('thread'))) { return false; } return true; }
/** * Launch background task * @param string $name */ protected function _launchTask($name) { $thread = Request::getInstance()->getPart(3); $timeLimit = intval(Request::getInstance()->getPart(2)); if ($thread) { $threadName = $name . $thread; } else { $threadName = $name; } $appCfg = $this->_configs->get($name); $appCfg['thread'] = $thread; $adapter = $appCfg['adapter']; if ($timeLimit) { $this->_cronConfig['time_limit'] = $timeLimit; $this->_cronConfig['intercept_limit'] = $timeLimit; } $lock = new Cron_Lock($this->_cronConfig); if ($this->_log) { $lock->setLogsAdapter($this->_log); } if (!$lock->launch($threadName)) { exit; } $appCfg['lock'] = $lock; $bgStorage = new Bgtask_Storage_Orm(Model::factory('Bgtask'), Model::factory('Bgtask_Signal')); $tManager = Bgtask_Manager::getInstance(); $tManager->setStorage($bgStorage); if ($this->_log) { $tManager->setLogger($this->_log); } $tManager->launch(Bgtask_Manager::LAUNCHER_SILENT, $adapter, $appCfg); $lock->finish(); }