Fresns 的定时任务基于 Laravel 的 Task Scheduler 机制
参考资料
Fresns 的定时任务基于 Laravel 的 Task Scheduler 机制
Fresns 的定时任务基于 Laravel 的 Task Scheduler 机制。核心逻辑是:在服务器上配置一个每分钟执行一次的 cron,由它触发 Laravel 的调度器,调度器再根据定义好的周期去执行具体任务。
📂 宝塔面板配置步骤
进入计划任务:宝塔面板 → 计划任务 → 添加任务。
任务类型:选择 Shell 脚本。
执行周期:选择 N 分钟,并设置为 1 分钟。
脚本内容:复制以下命令,注意替换你的项目路径:
su -c "cd /www/wwwroot/fresns && php artisan schedule:run >> /dev/null 2>&1" -s /bin/sh www
示例(官方推荐):
su -c "cd /www/wwwroot/fresns && php artisan schedule:run >> /dev/null 2>&1" -s /bin/sh www
/www/wwwroot/fresns:替换为你的 Fresns 实际安装目录。www:替换为你的网站运行用户(通常是www)。
配置完成后,点击“执行”测试一下,如果没报错就说明脚本本身可以运行。
⚙️ 调度机制说明
Laravel 的调度器是一个“入口”,它每分钟被触发一次,然后检查“现在有没有到点该执行的任务”。具体任务的定义(比如“每 10 分钟检查一次角色过期”)由 Fresns 主程序在内部管理,它会遍历数据库中 crontab_items 表里的条目,根据 cronTableFormat 字段来判断是否该执行。
💡 注意事项
PHP 版本兼容性:有用户反馈在 PHP 8.4 环境下,定时任务可能会导致 500 错误,如果遇到此类问题,可以尝试切换到 PHP 8.3 或更低版本进行排查。
权限问题:如果脚本执行失败,检查一下命令中的用户(如
www)是否有权限读取项目目录和执行 PHP。
时间:2026-10-01 16:59:03
来源:https://fresns.ciilii.com/
