/** * Instantiate an object * @return Bgtask_Manager */ public static function getInstance() { if (is_null(self::$_instance)) { self::$_instance = new self(); } return self::$_instance; }
public function stopAction() { $this->_checkCanEdit(); $pid = Request::post('pid', 'integer', 0); if (!$pid) { Response::jsonError($this->_lang->WRONG_REQUEST); } if ($this->_tManager->signal($pid, Bgtask_Abstract::SIGNAL_STOP)) { Response::jsonSuccess(); } else { Response::jsonError($this->_lang->CANT_EXEC); } }
/** * Process received signals, * starts processing signals and arranges for their receival */ public function processSignals() { $this->_isLive(); $sig = $this->_tm->getSignals($this->_pid, true); if (empty($sig)) { return; } foreach ($sig as $signal) { switch ($signal) { case self::SIGNAL_SLEEP: $this->_sleep(); break; case self::SIGNAL_CONTINUE: $this->_continue(); break; case self::SIGNAL_STOP: $this->stop(); } } if ($this->_sleepFlag) { $this->_wait(); } }
/** * Recrop */ public function startcropAction() { $this->_checkCanEdit(); $notCroped = Request::post('notcroped', 'boolean', false); $sizes = Request::post('size', 'array', array()); if (empty($sizes) || !is_array($sizes)) { Response::jsonError($this->_lang->MSG_SELECT_SIZE); } $mediaConfig = Model::factory('Medialib')->getConfig()->__toArray(); $acceptedSizes = array_keys($mediaConfig['image']['sizes']); $sizeToCrop = array(); foreach ($sizes as $key => $item) { if (in_array($item, $acceptedSizes, true)) { $sizeToCrop[] = $item; } } if (empty($sizeToCrop)) { Response::jsonError($this->_lang->MSG_SELECT_SIZE); } Model::factory('bgtask')->getDbConnection()->getProfiler()->setEnabled(false); $bgStorage = new Bgtask_Storage_Orm(Model::factory('bgtask'), Model::factory('Bgtask_Signal')); $logger = new Bgtask_Log_File($this->_configMain['task_log_path'] . 'recrop_' . date('d_m_Y__H_i_s')); $tm = Bgtask_Manager::getInstance(); $tm->setStorage($bgStorage); $tm->setLogger($logger); $tm->launch(Bgtask_Manager::LAUNCHER_JSON, 'Task_Recrop', array('types' => $sizeToCrop, 'notCroped' => $notCroped)); }
public function decryptDataAction() { $this->_checkCanEdit(); $object = Request::post('object', 'string', false); if (!$object || !Db_Object_Config::configExists($object)) { Response::jsonError($this->_lang->get('WRONG_REQUEST')); } $container = $this->decryptContainerPrefix . $object; $objectModel = Model::factory($object); $taskModel = Model::factory('bgtask'); $signalModel = Model::factory('Bgtask_Signal'); //disable profiling in dev mode if ($this->_configMain->get('development')) { $taskModel->getDbConnection()->getProfiler()->setEnabled(false); $signalModel->getDbConnection()->getProfiler()->setEnabled(false); $objectModel->getDbConnection()->getProfiler()->setEnabled(false); } $logger = new Bgtask_Log_File($this->_configMain['task_log_path'] . $container . '_' . date('d_m_Y__H_i_s')); $bgStorage = new Bgtask_Storage_Orm($taskModel, $signalModel); $tm = Bgtask_Manager::getInstance(); $tm->setStorage($bgStorage); $tm->setLogger($logger); // Start encryption task $tm->launch(Bgtask_Manager::LAUNCHER_SIMPLE, 'Task_Orm_Decrypt', array('object' => $object, 'session_container' => $container)); }
/** * 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(); }
/** * Create archive */ public function viewMakeAction() { $serverId = Request::post('server_id', 'pagecode', ''); $update = Request::post('update_files', 'array', array()); $delete = Request::post('delete_files', 'array', array()); if (!strlen($serverId)) { Response::jsonError($this->_lang->WRONG_REQUEST); } if (empty($update) && empty($delete)) { Response::jsonError($this->_lang->WRONG_REQUEST); } $bgStorage = new Bgtask_Storage_Orm(Model::factory('bgtask'), Model::factory('Bgtask_Signal')); $logger = new Bgtask_Log_File($this->_configMain['task_log_path'] . 'archive_' . $serverId . '_' . date('d_m_Y__H_i_s')); $tm = Bgtask_Manager::getInstance(); $tm->setStorage($bgStorage); $tm->setLogger($logger); $cfg = array('server' => $serverId, 'files' => $update, 'files_delete' => $delete); $tm->launch(Bgtask_Manager::LAUNCHER_JSON, 'Task_Deploy_Archive', $cfg); }