我正在使用Dispatcher和 Laravel 4.2 来调度和运行 cron 作业。
我已经添加了我的命令,它显示php artisan
正确。如果我从终端运行它,它会按预期运行。
按照说明,我已添加到 crontab:
* * * * * php /home/tti/public_html/artisan scheduled:run 1>> /dev/null 2>&1
如果我运行scheduled:summary
,我可以看到我的列表如下:
+----------------+--------------------+-----------+--------+------+--------------+-------+-------------+--------+
| Environment(s) | Name | Args/Opts | Minute | Hour | Day of Month | Month | Day of Week | Run as |
+----------------+--------------------+-----------+--------+------+--------------+-------+-------------+--------+
| * | cron:test | | * | * | * | * | * | |
+----------------+--------------------+-----------+--------+------+--------------+-------+-------------+--------+
这是命令的代码:
<?php
use Indatus\Dispatcher\Scheduling\ScheduledCommand;
use Indatus\Dispatcher\Scheduling\Schedulable;
use Indatus\Dispatcher\Drivers\Cron\Scheduler;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class DatabaseBackup extends ScheduledCommand {
/**
* The console command name.
*
* @var string
*/
protected $name = 'wtf:test';
/**
* The console command description.
*
* @var string
*/
protected $description = 'This is a test.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* When a command should run
*
* @param Scheduler $scheduler
* @return \Indatus\Dispatcher\Scheduling\Schedulable
*/
public function schedule(Schedulable $scheduler)
{
// return $scheduler;
return $scheduler
->daily()
->hours(3)
->minutes(20);
}
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
Log::info('Cron test successful');
}
}
同样,一切都可以从终端命令正确运行。
当我等待 cron 触发时,我的日志中出现以下错误:
local.ERROR: exception 'InvalidArgumentException' with message 'There are no commands defined in the "wtf" namespace.' in /home/tti/public_html/vendor/symfony/console/Symfony/Component/Console/Application.php:514
Stack trace:
#0 /home/tti/public_html/vendor/symfony/console/Symfony/Component/Console/Application.php(548): Symfony\Component\Console\Application->findNamespace('wtf')
#1 /home/tti/public_html/vendor/symfony/console/Symfony/Component/Console/Application.php(188): Symfony\Component\Console\Application->find('wtf:databasebac...')
#2 /home/tti/public_html/vendor/symfony/console/Symfony/Component/Console/Application.php(121): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#3 /home/tti/public_html/artisan(58): Symfony\Component\Console\Application->run()
#4 {main} [] []
[2016-08-13 15:35:01] local.ERROR: exception 'InvalidArgumentException' with message 'There are no commands defined in the "wtf" namespace.' in /home/tti/public_html/vendor/symfony/console/Symfony/Component/Console/Application.php:514
Stack trace:
#0 /home/tti/public_html/vendor/symfony/console/Symfony/Component/Console/Application.php(548): Symfony\Component\Console\Application->findNamespace('cron')
#1 /home/tti/public_html/vendor/symfony/console/Symfony/Component/Console/Application.php(188): Symfony\Component\Console\Application->find('wtf:databasebac...')
#2 /home/tti/public_html/vendor/symfony/console/Symfony/Component/Console/Application.php(121): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#3 /home/tti/public_html/artisan(58): Symfony\Component\Console\Application->run()
#4 {main} [] []
为什么这不能正确运行?