在Linux系统下,Laravel框架提供了任务调度器(Task Scheduler)来帮助你实现定时任务。以下是配置和使用Laravel任务调度器的步骤:
-
创建一个新的命令: 使用
php artisan make:command
命令创建一个新的命令。例如,我们创建一个名为SendEmails
的命令:php artisan make:command SendEmails
这将在
app/Console/Commands
目录下生成一个新的SendEmails.php
文件。 -
编辑命令类: 打开
SendEmails.php
文件,编辑handle()
方法以实现你的定时任务逻辑。例如:protected function handle() { // 发送电子邮件的逻辑 Mail::to('example@example.com')->send(new EmailTemplate()); }
-
注册命令: 在
app/Console/Kernel.php
文件中,将新创建的命令添加到commands
数组中:protected $commands = [ Commands\SendEmails::class, ];
-
配置定时任务: 在
app/Console/Kernel.php
文件中,找到schedule()
方法并编辑它。使用call()
方法调用你的命令,并使用everyMinute()
、hourly()
等方法设置任务的执行频率。例如,我们让SendEmails
命令每分钟执行一次:protected function schedule(Schedule $schedule) { $schedule->command('emails:send')->everyMinute(); }
-
设置Crontab: 为了让Laravel任务调度器在服务器上运行,你需要在服务器上设置一个Crontab条目。使用以下命令打开当前用户的Crontab文件:
crontab -e
在文件末尾添加以下内容:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
将
/path-to-your-project
替换为你的Laravel项目的实际路径。这个Crontab条目会每分钟运行php artisan schedule:run
命令,从而触发你在schedule()
方法中定义的定时任务。 -
保存并退出Crontab编辑器。现在,你的Laravel定时任务已经在Linux系统下配置好了,它会按照你设置的时间间隔自动执行。