summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2017-01-28 10:50:25 -0500
committerFrederic Guillot <fred@kanboard.net>2017-01-28 10:50:25 -0500
commit9357b3a4ec64fbcca58967d0319065de7d363560 (patch)
treee49c00881e4829543af80cd9c4ecfe80348670ab
parent20832b439d16510bad1ac607fe5db9b338d11ea7 (diff)
Add command to execute individual job
-rw-r--r--ChangeLog1
-rw-r--r--app/Console/JobCommand.php35
-rw-r--r--app/Core/Queue/QueueManager.php2
-rw-r--r--app/ServiceProvider/CommandProvider.php2
-rw-r--r--doc/cli.markdown7
5 files changed, 46 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 34829815..3b87b3ab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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: