%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/queue/driver/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/queue/driver/MySQL.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2018 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\queue\driver; use humhub\modules\queue\interfaces\QueueInfoInterface; use Yii; use yii\db\Expression; use yii\db\Query; use yii\queue\db\Queue; /** * MySQL queue driver * * @since 1.2 * @author Luke */ class MySQL extends Queue implements QueueInfoInterface { /** * @inheritdoc */ public $mutex = 'yii\mutex\MysqlMutex'; /** * @return int the number of waiting jobs in the queue */ public function getWaitingJobCount() { return (new Query()) ->from($this->tableName) ->andWhere(['channel' => $this->channel]) ->andWhere(['reserved_at' => null]) ->andWhere(['delay' => 0])->count(); } /** * @return int the number of delayed jobs in the queue */ public function getDelayedJobCount() { return (new Query()) ->from($this->tableName) ->andWhere(['channel' => $this->channel]) ->andWhere(['reserved_at' => null]) ->andWhere(['>', 'delay', 0])->count(); } /** * @return int the number of reserved jobs in the queue */ public function getReservedJobCount() { return (new Query()) ->from($this->tableName) ->andWhere(['channel' => $this->channel]) ->andWhere('[[reserved_at]] is not null') ->andWhere(['done_at' => null])->count(); } /** * @return int the number of done jobs in the queue */ public function getDoneJobCount() { $databaseName = (new Query())->select(new Expression('DATABASE()'))->scalar(); $tableName = Yii::$app->db->schema->getRawTableName($this->tableName); $total = (new Query()) ->select('AUTO_INCREMENT') ->from('INFORMATION_SCHEMA.TABLES') ->where(['TABLE_SCHEMA' => $databaseName, 'TABLE_NAME' => $tableName]) ->scalar(); return $total - $this->getWaitingJobCount() - $this->getDelayedJobCount() - $this->getReservedJobCount(); } }