예제 #1
0
 public function execute() {
     $task = new Gpf_Db_Task();
     $task->setClassName('Gpf_Mail_OutboxRunner');
     $task->loadFromData(array(Gpf_Db_Table_Tasks::CLASSNAME));
     
     $select = new Gpf_SqlBuilder_SelectBuilder();
     $select->select->add(Gpf_Db_Table_MailOutbox::ID);
     $select->from->add(Gpf_Db_Table_MailOutbox::getName());
     $select->orderBy->add(Gpf_Db_Table_MailOutbox::ID);
     $select->limit->set(0,1);
     try {
     	$row = $select->getOneRow();
     	$begining = $row->get(Gpf_Db_Table_MailOutbox::ID);
     } catch (Gpf_Exception $e) {
     	$begining = 1;
     }
     
     try {
         $task->load();
         $task->setParams($begining);
         $task->setWorkingAreaFrom($begining);   
         $task->setWorkingAreaTo(Gpf_Mail_OutboxRunner::MAX_MAIL_WORKERS_COUNT);
         $task->update(array(Gpf_Db_Table_Tasks::WORKING_AREA_FROM, Gpf_Db_Table_Tasks::WORKING_AREA_TO, Gpf_Db_Table_Tasks::PARAMS));
     } catch (Gpf_Exception $e) {
         throw new Gpf_Exception('Cannot update Gpf_Mail_OutboxRunner task to paralel version');
     }
 }
예제 #2
0
 public function execute() {
     $task = new Gpf_Db_Task();
     $task->setClassName('Pap_Tracking_Visit_Processor');                      
     
     try {
         $task->loadFromData(array(Gpf_Db_Table_Tasks::CLASSNAME));
         $task->setWorkingAreaFrom(0);   
         $task->setWorkingAreaTo(Pap_Tracking_Visit_Processor::MAX_WORKERS_COUNT - 1);
         $task->update(array(Gpf_Db_Table_Tasks::WORKING_AREA_FROM, Gpf_Db_Table_Tasks::WORKING_AREA_TO));
     } catch (Gpf_Exception $e) {}
 }
예제 #3
0
 protected function splitTask(Gpf_Db_Task $task)
 {
     $workingAreaTo = $task->getWorkingAreaTo();
     $splitNumber = intval(($task->getWorkingAreaTo() - $task->getWorkingAreaFrom()) / 2);
     $task->setWorkingAreaTo($task->getWorkingAreaFrom() + $splitNumber);
     $task->update();
     if ($task->get(Gpf_Db_Table_Tasks::ID) == $this->task->get(Gpf_Db_Table_Tasks::ID)) {
         $this->task = $task;
     }
     $this->createWorker($task->getWorkingAreaFrom() + $splitNumber + 1, $workingAreaTo);
 }