Cron Job与Laravel 4

时间:2013-01-25 11:32:13

标签: laravel laravel-4 cron command

我正在尝试找出如何在Laravel 4中设置一个cron作业,以及我需要在artisan中运行的命令。

在Laravel 3中,有Tasks,但这些似乎不再存在,并且没有关于如何做到的文档......

4 个答案:

答案 0 :(得分:31)

下面我详细介绍了使用cron在commands中使用Laravel 4的教程。我已经分为四个步骤,以便更容易理解。

步骤#1:在Laravel 4中创建一个命令:

php artisan command:make RefreshStats

使用上面的命令,Laravel将在目录RefreshStats.php中创建一个名为app/commands/的文件


RefreshStats.php 这是一个这样的文件:

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;

class RefreshStats extends Command {

        protected $name = 'command:name';
        protected $description = 'Command description.';

        public function __construct() {
                parent::__construct();
        }

        public function fire(){

        }

        protected function getArguments() {
            return array(
                array('example', InputArgument::REQUIRED, 'An example argument.'),
            );
        }

        protected function getOptions() {
            return array(
                array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
            );
        }

}


步骤#2:RefreshStats文件的简单“配置”:

您应该更改此行:

protected $name = 'command:name';

这样的事情:

protected $name = 'refresh:stats';

如果您不需要参数(选项相同),请更改此行:

protected function getArguments() {
      return array(
          array('example', InputArgument::REQUIRED, 'An example argument.'),
      );
}

为:

protected function getArguments() {
      return array();
}

现在注意fire功能。该命令将执行在该函数中编写的源代码。例如:

public function fire(){
    echo "Hello world";    
}


步骤#3:注册命令:

您需要注册该命令。所以打开app/start/artisan.php文件,然后添加一行,如下所示:

Artisan::add(new RefreshStats);


步骤#4:创建 CRON 计划任务:

最后,您可以添加计划任务,如下所示:

crontab -e

并添加一行(每30分钟运行命令),如下所示:

*/30 * * * * php path_laravel_project/artisan refresh:stats


所有这些都可以自动

答案 1 :(得分:15)

任务已被替换为commands,这与Laravel 4中的内容相同,但与Symfony的控制台组件集成,甚至比之前更强大。

答案 2 :(得分:4)

另外,如果您不喜欢命令,则会有一个非官方的Laravel 4 cron包:https://github.com/liebig/cron

答案 3 :(得分:0)

好的,所以我发现this对于在laravel 4.2中设置克朗很有用。