如何在Laravel 4中设置任务调度?

时间:2015-07-23 20:26:30

标签: php laravel laravel-4 cron command

我在Laravel 4.2中建立了一个网站,我们每月有30个学分的会员资格。即使用户未使用所有这些内容,它们也应在valid_till日期到期。

我希望有一段代码可以在每天晚上12点运行,并且会在valid_till日期等于昨天或之前的每个帐户中设置为0。

如果在laravel 5.1中有任何类似任务安排的东西,它在每天的特定时间运行一个功能,那将是完美的。
我知道cron可以在Laravel 4.2中使用命令设置,但我无法理解如何在我的情况下使用它?

1 个答案:

答案 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

你应该好好去