diff options
author | Frederic Guillot <fred@kanboard.net> | 2017-01-28 10:50:25 -0500 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2017-01-28 10:50:25 -0500 |
commit | 9357b3a4ec64fbcca58967d0319065de7d363560 (patch) | |
tree | e49c00881e4829543af80cd9c4ecfe80348670ab | |
parent | 20832b439d16510bad1ac607fe5db9b338d11ea7 (diff) |
Add command to execute individual job
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | app/Console/JobCommand.php | 35 | ||||
-rw-r--r-- | app/Core/Queue/QueueManager.php | 2 | ||||
-rw-r--r-- | app/ServiceProvider/CommandProvider.php | 2 | ||||
-rw-r--r-- | doc/cli.markdown | 7 |
5 files changed, 46 insertions, 1 deletions
@@ -4,6 +4,7 @@ Version 1.0.38 (unreleased) New features: * User invites +* Add command to execute individual job (mostly for debugging) Improvements: diff --git a/app/Console/JobCommand.php b/app/Console/JobCommand.php new file mode 100644 index 00000000..bdaae32f --- /dev/null +++ b/app/Console/JobCommand.php @@ -0,0 +1,35 @@ +<?php + +namespace Kanboard\Console; + +use Kanboard\Core\Queue\JobHandler; +use SimpleQueue\Job; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * Class JobCommand + * + * @package Kanboard\Console + * @author Frederic Guillot + */ +class JobCommand extends BaseCommand +{ + protected function configure() + { + $this + ->setName('job') + ->setDescription('Execute individual job (read payload from stdin)') + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $payload = fgets(STDIN); + + $job = new Job(); + $job->unserialize($payload); + + JobHandler::getInstance($this->container)->executeJob($job); + } +} diff --git a/app/Core/Queue/QueueManager.php b/app/Core/Queue/QueueManager.php index dcf0ebf5..1d7c2d1e 100644 --- a/app/Core/Queue/QueueManager.php +++ b/app/Core/Queue/QueueManager.php @@ -64,7 +64,7 @@ class QueueManager extends Base public function listen() { if ($this->queue === null) { - throw new LogicException('No queue driver defined!'); + throw new LogicException('No queue driver defined or unable to connect to broker!'); } while ($job = $this->queue->pull()) { diff --git a/app/ServiceProvider/CommandProvider.php b/app/ServiceProvider/CommandProvider.php index c9abb294..f17ba352 100644 --- a/app/ServiceProvider/CommandProvider.php +++ b/app/ServiceProvider/CommandProvider.php @@ -5,6 +5,7 @@ namespace Kanboard\ServiceProvider; use Kanboard\Console\CronjobCommand; use Kanboard\Console\DatabaseMigrationCommand; use Kanboard\Console\DatabaseVersionCommand; +use Kanboard\Console\JobCommand; use Kanboard\Console\LocaleComparatorCommand; use Kanboard\Console\LocaleSyncCommand; use Kanboard\Console\PluginInstallCommand; @@ -52,6 +53,7 @@ class CommandProvider implements ServiceProviderInterface $application->add(new TaskTriggerCommand($container)); $application->add(new CronjobCommand($container)); $application->add(new WorkerCommand($container)); + $application->add(new JobCommand($container)); $application->add(new ResetPasswordCommand($container)); $application->add(new ResetTwoFactorCommand($container)); $application->add(new PluginUpgradeCommand($container)); diff --git a/doc/cli.markdown b/doc/cli.markdown index 8bd5bde5..b1722308 100644 --- a/doc/cli.markdown +++ b/doc/cli.markdown @@ -30,6 +30,7 @@ Options: Available commands: cronjob Execute daily cronjob help Displays help for a command + job Execute individual job (read payload from stdin) list Lists commands worker Execute queue worker db @@ -207,6 +208,12 @@ Note: Installed files will have the same permissions as the current user ./cli worker ``` +### Execute individual job (mostly for debugging) + +```bash +echo 'RAW_JOB_DATA' | ./cli job +``` + ### Execute database migrations If the parameter `DB_RUN_MIGRATIONS` is set to `false`, you have run the database migrations manually: |