我在Laravel 4.2中建立了一个网站,我们每月有30个学分的会员资格。即使用户未使用所有这些内容,它们也应在valid_till
日期到期。
我希望有一段代码可以在每天晚上12点运行,并且会在valid_till
日期等于昨天或之前的每个帐户中设置为0。
如果在laravel 5.1中有任何类似任务安排的东西,它在每天的特定时间运行一个功能,那将是完美的。
我知道cron可以在Laravel 4.2中使用命令设置,但我无法理解如何在我的情况下使用它?
答案 0 :(得分:3)
在app / commands中创建如下所示的文件,将fire方法中的注释替换为更新函数。
<?php
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class setCreditToZero extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'set:zero';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
// your update function here
}
/**
* Get the console command arguments.
*
* @return array
*/
protected function getArguments()
{
return [
];
}
/**
* Get the console command options.
*
* @return array
*/
protected function getOptions()
{
return [
];
}
}
在app / start / artisan.php中注册您的命令
Artisan::add(new setCreditToZero);
现在使用终端上的命令设置cronjob
crontab -e
在此文件中设置一个带有此行的cronjob
0 0 * * * /usr/bin/php /path/to/laravel/baseDir/artisan set:zero
你应该好好去