Laravel 4.2 Indatus / dispatcher - 命令没有定义

时间:2016-09-24 10:22:19

标签: php laravel laravel-4 cron laravel-scheduler

我在Laravel 4.2上使用Indatus/dispatcher。它基本上是基于Cron作业的任务计划程序。

我正在尝试每分钟运行一次Cron作业,我在实时服务器上收到此错误(但它在我的本地计算机上运行正常)。这就是我所做的:

<?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 TestCommand extends ScheduledCommand {

    /**
     * The console command name.
     *
     * @var string
     */
    protected $name = 'command:check';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Check if the meberships are verified.';

    /**
     * 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->everyMinutes(1);
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function fire()
    {
        Log::info('I was here @ ' . date('H:i:s'));
    }

    /**
     * Get the console command arguments.
     *
     * @return array
     */
    protected function getArguments()
    {
        return array(
            // array('example', InputArgument::REQUIRED, 'An example argument.'),
        );
    }

    /**
     * Get the console command options.
     *
     * @return array
     */
    protected function getOptions()
    {
        return array(
            // array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
        );
    }

}

所以基本上,每次调度程序运行时,我只是在我的日志文件中写一行(即 Storage / laravel.log )。当我在本地计算机上执行 php artisan scheduled:run 时,它会在我的日志文件中写入一个新行。

现在,我已经在我的服务器上上传了代码并创建了一个Cron作业:

[http://awesomescreenshot.com/09a64zii1f](http://awesomescreenshot.com/09a64zii1f)

Cron作业按预期每分钟运行,日志文件也每分钟更新一次,但不是我在日志文件中写入的消息,而是每分钟写入错误:

  

[2016-09-24 09:20:01] production.ERROR:带有'Command'命令的异常'InvalidArgumentException':勾选“未定义。

     

你的意思是?

     

命令:make'in /home/mhjamil/public_html/l4-cron/test/vendor/symfony/console/Symfony/Component/Console/Application.php:564

Stack trace:
 #0 /home/mhjamil/public_html/l4-cron/test/vendor/symfony/console/Symfony/Component/Console/Application.php(190): Symfony\Component\Console\Application->find('command:check')
 #1 /home/mhjamil/public_html/l4-cron/test/vendor/symfony/console/Symfony/Component/Console/Application.php(124): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
 #2 /home/mhjamil/public_html/l4-cron/test/artisan(58): Symfony\Component\Console\Application->run()
 #3 {main} [] []`

顺便说一下,我已经在 app / start / artisan.php 中注册了该命令

Artisan::add(new TestCommand);

此外,命令php artisan command:check在我的本地计算机上成功运行,但当我将其上传到我的服务器时,它会显示命令“命令:check”未定义

还有一件事,在我的服务器上,我添加了一条路线,然后Artican::call("command:check");。现在每当我重新加载此页面时,它都会在日志文件中成功记录一个条目。但是当通过cron作业完成时它会给出错误。所以我猜这个问题与cron作业或服务器设置有些关系。

我尝试将cron命令更改为:

/usr/bin/php /home/mhjamil/public_html/l4-cron/test/artisan command:check 1>> /dev/null 2>&1

之前我使用的是schaduled:run,但问题仍然存在:(

0 个答案:

没有答案