Class zhuravljov\yii\queue\db\Driver
| Inheritance | zhuravljov\yii\queue\db\Driver » zhuravljov\yii\queue\Driver » yii\base\Object | 
|---|---|
| Implements | yii\base\BootstrapInterface | 
| Source Code | https://github.com/yiisoft/yii2-queue/blob/master/src/db/Driver.php | 
Class DbDriver
Public Properties
| Property | Type | Description | Defined By | 
|---|---|---|---|
| $db | \yii\db\Connection|array|string | zhuravljov\yii\queue\db\Driver | |
| $deleteReleased | boolean | Ability to delete released messages from table | zhuravljov\yii\queue\db\Driver | 
| $mutex | \yii\mutex\Mutex|array|string | zhuravljov\yii\queue\db\Driver | |
| $queue | zhuravljov\yii\queue\Queue | zhuravljov\yii\queue\Driver | |
| $tableName | string | Table name | zhuravljov\yii\queue\db\Driver | 
Public Methods
| Method | Description | Defined By | 
|---|---|---|
| __construct() | zhuravljov\yii\queue\Driver | |
| bootstrap() | zhuravljov\yii\queue\db\Driver | |
| init() | zhuravljov\yii\queue\db\Driver | |
| pop() | Pops message and job from the storage. | zhuravljov\yii\queue\db\Driver | 
| purge() | Purges the storage. | zhuravljov\yii\queue\db\Driver | 
| push() | Pushes job to the storage. | zhuravljov\yii\queue\db\Driver | 
| release() | Releases the message. | zhuravljov\yii\queue\db\Driver | 
Protected Methods
| Method | Description | Defined By | 
|---|---|---|
| getQueue() | zhuravljov\yii\queue\Driver | 
Property Details
Ability to delete released messages from table
Method Details
Defined in: zhuravljov\yii\queue\Driver::__construct()
| public void __construct ( zhuravljov\yii\queue\Queue $queue, $config = [] ) | ||
| $queue | zhuravljov\yii\queue\Queue | |
| $config | ||
                public function __construct(Queue $queue, $config = [])
{
    $this->_queue = $queue;
    parent::__construct($config);
}
            
        
| public void bootstrap ( $app ) | ||
| $app | ||
                public function bootstrap($app)
{
    if ($app instanceof \yii\console\Application) {
        $app->controllerMap[$this->queue->id] = [
            'class' => Command::class,
            'queue' => $this->queue,
        ];
    }
}
            
        Defined in: zhuravljov\yii\queue\Driver::getQueue()
| protected zhuravljov\yii\queue\Queue getQueue ( ) | 
                protected function getQueue()
{
    return $this->_queue;
}
            
        
| public void init ( ) | 
                public function init()
{
    parent::init();
    $this->db = Instance::ensure($this->db, Connection::class);
    $this->mutex = Instance::ensure($this->mutex, Mutex::class);
}
            
        Pops message and job from the storage.
| public boolean pop ( &$message, &$job ) | ||
| $message | mixed | |
| $job | zhuravljov\yii\queue\Job | |
                public function pop(&$message, &$job)
{
    $this->mutex->acquire(__CLASS__);
    $message = (new Query())
        ->from($this->tableName)
        ->where(['started_at' => null])
        ->orderBy(['id' => SORT_ASC])
        ->limit(1)
        ->one($this->db);
    if (is_array($message)) {
        $message['started_at'] = time();
        $this->db->createCommand()->update(
            $this->tableName,
            ['started_at' => $message['started_at']],
            ['id' => $message['id']]
        )->execute();
    }
    $this->mutex->release(__CLASS__);
    if (is_array($message)) {
        $job = unserialize($message['job']);
        return true;
    } else {
        return false;
    }
}
            
        Purges the storage.
| public void purge ( ) | 
                public function purge()
{
    $this->mutex->acquire(__CLASS__);
    $this->db->createCommand()->delete(
        $this->tableName,
        ['started_at' => null]
    )->execute();
    $this->mutex->release(__CLASS__);
}
            
        Pushes job to the storage.
| public mixed push ( $job ) | ||
| $job | zhuravljov\yii\queue\Job | |
| return | mixed | 
                                 $message  | 
                        
|---|---|---|
                public function push($job)
{
    $this->db->createCommand()->insert(
        $this->tableName,
        ['job' => serialize($job), 'created_at' => time()]
    )->execute();
    return (new Query())
        ->from($this->tableName)
        ->where(['id' => $this->db->lastInsertID])
        ->one($this->db);
}
            
        Releases the message.
| public void release ( $message ) | ||
| $message | mixed | |
                public function release($message)
{
    if ($this->deleteReleased) {
        $this->db->createCommand()->delete(
            $this->tableName,
            ['id' => $message['id']]
        )->execute();
    } else {
        $this->db->createCommand()->update(
            $this->tableName,
            ['finished_at' => time()],
            ['id' => $message['id']]
        )->execute();
    }
}