Esempio n. 1
0
 /**
  * Instantiate an object
  * @return Bgtask_Manager
  */
 public static function getInstance()
 {
     if (is_null(self::$_instance)) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
Esempio n. 2
0
 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);
     }
 }
Esempio n. 3
0
 /**
  * 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();
     }
 }
Esempio n. 4
0
 /**
  * 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));
 }
Esempio n. 5
0
 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));
 }
Esempio n. 6
0
 /**
  * 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();
 }
Esempio n. 7
0
 /**
  * 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);
 }