Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Job/QueueableJob.php
Строк: 64
<?php
namespace ConcreteCoreJob;
use 
Config;
use 
Job as AbstractJob;
use 
Queue;
use 
ZendQueueQueue as ZendQueue;
use 
ZendQueueMessage as ZendQueueMessage;

abstract class 
QueueableJob extends AbstractJob {

    
// optional queue functions
    
protected $jQueueBatchSize;
    public function 
getJobQueueBatchSize() {return $this->jQueueBatchSize;}
    abstract public function 
start(ZendQueue $q);
    abstract public function 
finish(ZendQueue $q);
    abstract public function 
processQueueItem(ZendQueueMessage $msg);
    public function 
run() {}

    public function 
__construct() {
        
$this->jQueueBatchSize Config::get('concrete.limits.job_queue_batch');
    }

    public function 
getQueueObject() {
        return 
Queue::get('job_' $this->getJobHandle(), array('timeout' => 1));
    }

    public function 
reset() {
        
parent::reset();
        
$q $this->getQueueObject();
        
$q->deleteQueue();
    }

    public function 
markStarted() {
        
parent::markStarted();
        return 
$this->getQueueObject();
    }

    public function 
markCompleted($code 0$message false) {
        
$obj parent::markCompleted($code$message);
        
$q $this->getQueueObject();
        if (!
$this->didFail()) {
            
$q->deleteQueue();
        }
        return 
$obj;
    }

    
/**
     * Executejob for queueable jobs actually starts the queue, runs, and ends all in one function. This happens if we run a job in legacy mode.
     */

    
public function executeJob() {
        
$q $this->markStarted();
        
$this->start($q);
        try {
            
$messages $q->receive(PHP_INT_MAX);
            foreach(
$messages as $p) {
                
$this->processQueueItem($p);
                
$q->deleteMessage($p);
            }
            
$result $this->finish($q);
            
$obj $this->markCompleted(0$result);
        } catch(
Exception $e) {
            
$obj $this->markCompleted(Job::JOB_ERROR_EXCEPTION_GENERAL$e->getMessage());
            
$obj->message $obj->result// needed for progressive library.
        
}
        return 
$obj;
    }

}
Онлайн: 3
Реклама