我正在尝试找出如何在Laravel 4中设置一个cron作业,以及我需要在artisan中运行的命令。
在Laravel 3中,有Tasks
,但这些似乎不再存在,并且没有关于如何做到的文档......
答案 0 :(得分:31)
下面我详细介绍了使用cron在commands
中使用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),
);
}
}
您应该更改此行:
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";
}
您需要注册该命令。所以打开app/start/artisan.php
文件,然后添加一行,如下所示:
Artisan::add(new RefreshStats);
最后,您可以添加计划任务,如下所示:
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中设置克朗很有用。