first commit
This commit is contained in:
105
vendor/yiisoft/yii2-queue/src/drivers/file/Command.php
vendored
Normal file
105
vendor/yiisoft/yii2-queue/src/drivers/file/Command.php
vendored
Normal file
@ -0,0 +1,105 @@
|
||||
<?php
|
||||
/**
|
||||
* @link https://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license https://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yii\queue\file;
|
||||
|
||||
use yii\console\Exception;
|
||||
use yii\queue\cli\Command as CliCommand;
|
||||
use yii\queue\cli\InfoAction;
|
||||
|
||||
/**
|
||||
* Manages application file-queue.
|
||||
*
|
||||
* @author Roman Zhuravlev <zhuravljov@gmail.com>
|
||||
*/
|
||||
class Command extends CliCommand
|
||||
{
|
||||
/**
|
||||
* @var Queue
|
||||
*/
|
||||
public $queue;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $defaultAction = 'info';
|
||||
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function actions()
|
||||
{
|
||||
return [
|
||||
'info' => InfoAction::class,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
protected function isWorkerAction($actionID)
|
||||
{
|
||||
return in_array($actionID, ['run', 'listen']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs all jobs from file-queue.
|
||||
* It can be used as cron job.
|
||||
*
|
||||
* @return null|int exit code.
|
||||
*/
|
||||
public function actionRun()
|
||||
{
|
||||
return $this->queue->run(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Listens file-queue and runs new jobs.
|
||||
* It can be used as daemon process.
|
||||
*
|
||||
* @param int $timeout number of seconds to sleep before next reading of the queue.
|
||||
* @throws Exception when params are invalid.
|
||||
* @return null|int exit code.
|
||||
*/
|
||||
public function actionListen($timeout = 3)
|
||||
{
|
||||
if (!is_numeric($timeout)) {
|
||||
throw new Exception('Timeout must be numeric.');
|
||||
}
|
||||
if ($timeout < 1) {
|
||||
throw new Exception('Timeout must be greater than zero.');
|
||||
}
|
||||
|
||||
return $this->queue->run(true, $timeout);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears the queue.
|
||||
*
|
||||
* @since 2.0.1
|
||||
*/
|
||||
public function actionClear()
|
||||
{
|
||||
if ($this->confirm('Are you sure?')) {
|
||||
$this->queue->clear();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a job by id.
|
||||
*
|
||||
* @param int $id
|
||||
* @throws Exception when the job is not found.
|
||||
* @since 2.0.1
|
||||
*/
|
||||
public function actionRemove($id)
|
||||
{
|
||||
if (!$this->queue->remove((int) $id)) {
|
||||
throw new Exception('The job is not found.');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user