Exemplo n.º 1
0
 /**
  *
  * @return Gpf_Db_Table_Tasks
  */
 public static function getInstance()
 {
     if (self::$instance === null) {
         self::$instance = new self();
     }
     return self::$instance;
 }
Exemplo n.º 2
0
 protected function getActualWorkersCount()
 {
     $select = new Gpf_SqlBuilder_SelectBuilder();
     $select->where->add(Gpf_Db_Table_Tasks::CLASSNAME, '=', $this->getClassName());
     $select->where->add(Gpf_Db_Table_Tasks::DATEFINISHED, '=', null);
     return $this->getTableRowsCount($select, Gpf_Db_Table_Tasks::getName());
 }
Exemplo n.º 3
0
 public function init()
 {
     $this->setTable(Gpf_Db_Table_Tasks::getInstance());
     parent::init();
 }
Exemplo n.º 4
0
 /**
  *
  * @return Gpf_Db_Task
  */
 protected function getPendingTask($lastRunTaskId, $inclusion_type, $inclusion_tasks)
 {
     $sql = new Gpf_SqlBuilder_SelectBuilder();
     $sql->select->addAll(Gpf_Db_Table_Tasks::getInstance());
     $sql->from->add(Gpf_Db_Table_Tasks::getName());
     $sql->where->add(Gpf_Db_Table_Tasks::DATEFINISHED, '=', null);
     $sql->where->add(Gpf_Db_Table_Tasks::TYPE, '=', Gpf_Db_Task::TYPE_CRON);
     if ($inclusion_type == self::INCLUDE_TASKS) {
         $sql->where->add(Gpf_Db_Table_Tasks::CLASSNAME, 'IN', $inclusion_tasks);
     } else {
         if ($inclusion_type == self::EXCLUDE_TASKS) {
             $sql->where->add(Gpf_Db_Table_Tasks::CLASSNAME, 'NOT IN', $inclusion_tasks);
         }
     }
     $andCondition = new Gpf_SqlBuilder_CompoundWhereCondition();
     $andCondition->add(Gpf_Db_Table_Tasks::IS_EXECUTING, '<>', Gpf::YES, 'OR');
     $orCondition = new Gpf_SqlBuilder_CompoundWhereCondition();
     $orCondition->add(Gpf_Db_Table_Tasks::IS_EXECUTING, '=', Gpf::YES);
     $orCondition->add(Gpf_Db_Table_Tasks::DATECHANGED, '<', Gpf_Common_DateUtils::getDateTime(time() - self::MAX_TASK_RUN_TIME_WITHOUT_UPDATE));
     $andCondition->addCondition($orCondition, 'OR');
     $sql->where->addCondition($andCondition);
     $sleepCondition = new Gpf_SqlBuilder_CompoundWhereCondition();
     $sleepCondition->add(Gpf_Db_Table_Tasks::SLEEP_UNTIL, '=', null, 'OR');
     $sleepCondition->add(Gpf_Db_Table_Tasks::SLEEP_UNTIL, '<=', Gpf_Common_DateUtils::now(), 'OR');
     $sql->where->addCondition($sleepCondition);
     $sql->orderBy->add(Gpf_Db_Table_Tasks::WORKING_AREA_TO . '-' . Gpf_Db_Table_Tasks::WORKING_AREA_FROM, false);
     $sql->orderBy->add(Gpf_Db_Table_Tasks::DATECHANGED);
     $recordset = $sql->getAllRows();
     if ($recordset->getSize() == 0) {
         return false;
     }
     if ($lastRunTaskId == null) {
         return $this->getTask($recordset->get(0));
     }
     $recordId = $this->findLastRunTaskRecordsetPosition($recordset, $lastRunTaskId);
     if ($recordId === null) {
         return $this->getTask($recordset->get(0));
     }
     if ($recordId == $recordset->getSize() - 1) {
         return false;
     }
     if ($recordset->get($recordId + 1) == null) {
         return false;
     }
     return $this->getTask($recordset->get($recordId + 1));
 }
 protected function buildFrom()
 {
     $this->_selectBuilder->from->add(Gpf_Db_Table_Tasks::getName());
 }