96 lines
2.4 KiB
PHP
96 lines
2.4 KiB
PHP
<?php
|
|
/**
|
|
* @link https://www.yiiframework.com/
|
|
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
* @license https://www.yiiframework.com/license/
|
|
*/
|
|
|
|
namespace yii\queue\db;
|
|
|
|
use yii\db\Query;
|
|
use yii\helpers\Console;
|
|
use yii\queue\cli\Action;
|
|
|
|
/**
|
|
* Info about queue status.
|
|
*
|
|
* @deprecated Will be removed in 3.0. Use yii\queue\cli\InfoAction instead.
|
|
*
|
|
* @author Roman Zhuravlev <zhuravljov@gmail.com>
|
|
*/
|
|
class InfoAction extends Action
|
|
{
|
|
/**
|
|
* @var Queue
|
|
*/
|
|
public $queue;
|
|
|
|
|
|
/**
|
|
* Info about queue status.
|
|
*/
|
|
public function run()
|
|
{
|
|
Console::output($this->format('Jobs', Console::FG_GREEN));
|
|
|
|
Console::stdout($this->format('- waiting: ', Console::FG_YELLOW));
|
|
Console::output($this->getWaiting()->count('*', $this->queue->db));
|
|
|
|
Console::stdout($this->format('- delayed: ', Console::FG_YELLOW));
|
|
Console::output($this->getDelayed()->count('*', $this->queue->db));
|
|
|
|
Console::stdout($this->format('- reserved: ', Console::FG_YELLOW));
|
|
Console::output($this->getReserved()->count('*', $this->queue->db));
|
|
|
|
Console::stdout($this->format('- done: ', Console::FG_YELLOW));
|
|
Console::output($this->getDone()->count('*', $this->queue->db));
|
|
}
|
|
|
|
/**
|
|
* @return Query
|
|
*/
|
|
protected function getWaiting()
|
|
{
|
|
return (new Query())
|
|
->from($this->queue->tableName)
|
|
->andWhere(['channel' => $this->queue->channel])
|
|
->andWhere(['reserved_at' => null])
|
|
->andWhere(['delay' => 0]);
|
|
}
|
|
|
|
/**
|
|
* @return Query
|
|
*/
|
|
protected function getDelayed()
|
|
{
|
|
return (new Query())
|
|
->from($this->queue->tableName)
|
|
->andWhere(['channel' => $this->queue->channel])
|
|
->andWhere(['reserved_at' => null])
|
|
->andWhere(['>', 'delay', 0]);
|
|
}
|
|
|
|
/**
|
|
* @return Query
|
|
*/
|
|
protected function getReserved()
|
|
{
|
|
return (new Query())
|
|
->from($this->queue->tableName)
|
|
->andWhere(['channel' => $this->queue->channel])
|
|
->andWhere('[[reserved_at]] is not null')
|
|
->andWhere(['done_at' => null]);
|
|
}
|
|
|
|
/**
|
|
* @return Query
|
|
*/
|
|
protected function getDone()
|
|
{
|
|
return (new Query())
|
|
->from($this->queue->tableName)
|
|
->andWhere(['channel' => $this->queue->channel])
|
|
->andWhere('[[done_at]] is not null');
|
|
}
|
|
}
|