예제 #1
0
파일: Abstract.php 프로젝트: vgrish/dvelum
 /**
  * Constructor, receives task settings
  * @param array $config
  */
 public function __construct(array $config)
 {
     $this->_config = $config;
     $this->_tm = Bgtask_Manager::getInstance();
     $this->_logger = $this->_tm->getLogger();
     $this->_init();
     $this->run();
 }
예제 #2
0
 public function __construct()
 {
     parent::__construct();
     $bgStorage = new Bgtask_Storage_Orm(Model::factory('bgtask'), Model::factory('Bgtask_Signal'));
     $logger = new Bgtask_Log_File('./.log/test' . date('YmdHis') . '.txt');
     $this->_tManager = Bgtask_Manager::getInstance();
     $this->_tManager->setStorage($bgStorage);
     $this->_tManager->setLogger($logger);
 }
예제 #3
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));
 }
예제 #4
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));
 }
예제 #5
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();
 }
예제 #6
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);
 }