Home  >  Article  >  Backend Development  >  Detailed explanation of how Laravel implements scheduled tasks

Detailed explanation of how Laravel implements scheduled tasks

*文
*文Original
2018-01-03 15:00:012363browse

How to implement scheduled tasks in Laravel? This article mainly introduces the sample code for implementing scheduled tasks in Laravel. The editor thinks it is quite good, so I will share it with you now and give it as a reference. Let’s follow the editor to have a look, I hope it will be helpful to everyone.

Introduction

Scheduled tasks are a very common requirement in the back-end development process, often appearing in data statistics, spam cleaning and other scenarios. Laravel provides a complete set of scheduled task tools, so that we only need to focus on completing the logic, and it will take care of the rest of the basic work.

Basic usage

Generate command

php artisan make:command AreYouOK

5.2 and previous versions, this command is `php artisan make:console xxx`

Edit command

Edit the `app/Console/Commands/AreYouOK.php` file and modify the following:

... ...
protected $signature = 'areyou:ok'; // 命令名称
protected $description = '雷军,科技圈最会唱歌的男人'; // 命令描述,没什么用

public function __construct()
{
  parent::__construct();
  // 初始化代码写到这里,也没什么用
}
public function handle()
{
  // 功能代码写到这里
}

Registration command

Edit the `app/Console/Kernel.php` file and register the newly generated class:

protected $commands = [
  \App\Console\Commands\AreYouOK::class,
];

Write the calling logic:

protected function schedule(Schedule $schedule)
{
  $schedule->command('areyou:ok')
       ->timezone('Asia/Shanghai')
       ->everyMinute();
}

The above logic is called once every minute. Laravel provides time functions of various lengths from one minute to one year, which can be called directly.

Register this Laravel project to the cron of the system

Edit the `/etc/crontab` file and add the following code:

* * * * * root /usr/bin/php /var/www/xxxlaravel/artisan schedule:run >> /dev/null 2>&1

The above line `/var/www/xxxlaravel` in needs to be changed to the actual path.

fire

Restart cron to activate this function: `systemctl restart crond.service`, done!

Related recommendations:

Detailed explanation of how Laravel implements supervisor execution of asynchronous processes

Detailed explanation of Laravel's task scheduling console

Detailed explanation of how to use the Laravel event system to implement login logs

The above is the detailed content of Detailed explanation of how Laravel implements scheduled tasks. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn