本文目录导读:

在 Laravel 项目中配置任务调度(Task Scheduling)的 Cron 写法如下:
基础 Cron 配置
在服务器的 crontab 中添加:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
或者更规范的写法:
* * * * * /usr/bin/php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
详细配置示例
基本配置
# 每分钟执行一次 * * * * * cd /var/www/html/laravel-project && php artisan schedule:run >> /dev/null 2>&1 # 使用绝对路径 * * * * * /usr/local/bin/php /var/www/html/laravel-project/artisan schedule:run >> /dev/null 2>&1 # 记录日志 * * * * * /usr/local/bin/php /var/www/html/laravel-project/artisan schedule:run >> /var/log/laravel-scheduler.log 2>&1
任务定义示例
在 app/Console/Kernel.php 中定义任务:
protected function schedule(Schedule $schedule)
{
// 每分钟执行
$schedule->command('command:name')->everyMinute();
// 每小时执行
$schedule->command('emails:send')
->hourly()
->between('6:00', '18:00');
// 每天凌晨执行
$schedule->command('report:generate')->dailyAt('00:30');
// 每周一早上执行
$schedule->command('tasks:weekly')
->weekly()
->mondays()
->at('08:00');
// 使用回调函数
$schedule->call(function () {
// 执行任务
})->everyFifteenMinutes();
}
常用调度频率
// 频率方法
$schedule->command('task:name')
->everyMinute(); // 每分钟
->everyFiveMinutes(); // 每5分钟
->everyTenMinutes(); // 每10分钟
->everyFifteenMinutes(); // 每15分钟
->everyThirtyMinutes(); // 每30分钟
->hourly(); // 每小时
->daily(); // 每天
->weekly(); // 每周
->monthly(); // 每月
->yearly(); // 每年
// 特定时间
->dailyAt('13:00'); // 每天13:00
->hourlyAt(17); // 每小时的第17分钟
->weeklyOn(1, '8:00'); // 每周一8:00
->monthlyOn(15, '10:00'); // 每月15日10:00
生产环境注意事项
单服务器配置
# 使用环境变量 * * * * * cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1 # 避免输出 * * * * * cd /path/to/project && php artisan schedule:run >/dev/null 2>&1 &
多服务器配置(防止重复执行)
// Kernel.php
$schedule->command('report:generate')
->dailyAt('00:30')
->withoutOverlapping() // 防止重复
->onOneServer(); // 只在主服务器运行
查看和管理调度
# 查看调度列表 php artisan schedule:list # 测试执行 php artisan schedule:run # 测试特定命令 php artisan schedule:test-command command:name
日志和错误处理
$schedule->command('check:something')
->everyFiveMinutes()
->before(function () {
// 执行前
})
->after(function () {
// 执行后
})
->onFailure(function () {
// 失败时
Log::error('Task failed');
})
->onSuccess(function () {
// 成功时
});
Laravel 调度器每分钟运行一次,然后在 Kernel.php 中判断是否有需要执行的任务,这样可以让 cron 配置保持简单统一。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播