定时任务配置(Crontab)
系统有多个定时任务:会费提醒、队列处理、支付对账、档案 OCR 补跑、授权同步。不配定时任务,这些功能不会自动跑。
一、宝塔面板配置(推荐)
宝塔 → 计划任务 → 添加任务:
| 字段 | 填什么 | |---|---| | 任务类型 | Shell 脚本 | | 任务名称 | 协会系统调度 | | 执行周期 | 每分钟 | | 脚本内容 | 见下方 |
脚本:
cd /www/wwwroot/你的域名 && /www/wwwroot/你的域名/../php82/bin/php artisan schedule:run >> /dev/null 2>&1
宝塔 PHP 路径一般是
/www/server/php/82/bin/php,把上面路径换成实际路径:cd /www/wwwroot/你的域名 && /www/server/php/82/bin/php artisan schedule:run >> /dev/null 2>&1
二、命令行配置(Linux Crontab)
crontab -e 添加:
* * * * * cd /www/wwwroot/你的域名 && /www/server/php/82/bin/php artisan schedule:run >> /dev/null 2>&1
三、系统自带的任务清单
执行 php artisan schedule:list 能看到全部:
php artisan schedule:list
典型输出:
* * * * * php artisan queue:work --stop-when-empty .... 队列处理
*/5 * * * * php artisan pay:reconcile ................... 支付对账
* * * * * php artisan archive:ocr --retry --limit=3 .... 档案 OCR 补跑
*/5 * * * * php artisan approval:sync-wecom ............. 企微审批同步
0 9 * * * php artisan fee:remind ...................... 会费催缴提醒
四、队列必须能跑
队列负责:邮件发送、短信、AI 异步任务、支付回调处理。队列挂了这些都会卡住。
验证队列是否正常:
# 手动跑一次看有无报错
php artisan queue:work --stop-when-empty
如果报错,看 storage/logs/laravel.log。
五、常见问题
定时任务没跑
# 手动执行一次,看报错
cd /www/wwwroot/你的域名 && /www/server/php/82/bin/php artisan schedule:run
权限问题
计划任务默认用 root 跑,可能和 www 用户冲突(写缓存文件失败)。改脚本:
su - www -c "cd /www/wwwroot/你的域名 && /www/server/php/82/bin/php artisan schedule:run"
宝塔「执行日志」看结果
宝塔 → 计划任务 → 点任务 → 执行日志,能看到每次执行的输出(成功/报错)。
时间不对
服务器时区要设成 Asia/Shanghai:
timedatectl set-timezone Asia/Shanghai
date
下一步:功能介绍