LeafCMS GitHub 开始安装
Docs

系统里的说明

下面和后台「说明」是同一套:怎么用、后台每一栏、主题、模板标签,以及环境和安装。

定时任务和队列

采集、统计清理不会自己跑,要靠系统每分钟叫醒 Laravel。PHP / nginx 见「环境」。采集源在采集里配,间隔到了才会真正拉取。

调度会做什么

任务何时说明
采集每分钟问一次各采集源按自己的「间隔(分钟)」决定这次要不要抓
统计清理每天 03:20默认删掉 90 天以前的访问记录

本机 php artisan serve 或 Docker 试用可以不配。正式站至少要有下面「纯定时」那一行 cron,否则后台点「立即采集」才能跑。

怎么选模式

CMS_COLLECT_MODE行为还要什么进程
schedule(默认)定时到了就在当前进程里抓只要 cron 每分钟跑 schedule:run
queue定时只往队列丢任务cron + 常驻 queue:work(多站可共用)
off不自动跑只靠后台按钮或手动命令

CMS_STAT_PRUNE_MODE 同样三个值。改 .env 后执行 php artisan config:clear。

推荐:上线最小配置

CMS_SCHEDULE_ENABLED=true
CMS_COLLECT_MODE=schedule
CMS_STAT_PRUNE_MODE=schedule
* * * * * cd /var/www/leafcms && php artisan schedule:run >> /dev/null 2>&1

把路径换成你的项目根。Linux 用 crontab;Windows 用任务计划程序,每分钟执行同一条 php artisan schedule:run。

采集量大时用队列

CMS_SCHEDULE_ENABLED=true
CMS_COLLECT_MODE=queue
CMS_COLLECT_QUEUE=cms
CMS_STAT_PRUNE_MODE=queue
CMS_STAT_PRUNE_QUEUE=cms
QUEUE_CONNECTION=database

QUEUE_CONNECTION 不要用 sync,否则还是当场执行,等于没队列。可用 database 或 Redis。

* * * * * cd /var/www/leafcms && php artisan schedule:run >> /dev/null 2>&1
php artisan queue:work --queue=cms --sleep=1 --tries=1

第二行要常驻(systemd / supervisor)。挂了采集和清理都不会跑。

不用 Laravel 调度、自己写 cron

CMS_SCHEDULE_ENABLED=false
* * * * * cd /var/www/leafcms && php artisan cms:collect --sync
20 3 * * * cd /var/www/leafcms && php artisan cms:stat-prune --days=90 --sync

队列版把 --sync 换成 --queue,并同样要 queue:work --queue=cms。

手动命令

php artisan cms:collect
php artisan cms:collect --force
php artisan cms:collect --id=1 --force
php artisan cms:collect --queue
php artisan cms:collect --sync
php artisan cms:stat-prune --days=90

Docker 试用可 docker compose exec app php artisan cms:collect。演示环境一般不必配 cron。

飞机群 @sanpang