phpcms采集定时任务怎么设?3招搞定,再也不用熬夜守点更数据
时间:2026年05月23日 19:36:00
来源:易频IT社区
上周有个做本地美食号的朋友找我吐槽,说他快熬秃了。
他用PHPCMS搭的号,每天凌晨3点要爬附近商圈的新团购、外卖满减,熬了半个月胃炎犯了。
其实完全不用自己扛,PHPCMS本身就带点定时的功能,加上服务器的工具,半个小时就能全自动化。
今天我就把自己用了6年的3招全抖出来,不管你会不会写代码,都能照着做。
1. 先搞定PHPCMS后台的「采集规则预设+手动预热」
别直接跳去搞定时,先把采集本身的活儿练熟,不然定时了也是白搭,甚至可能爬一堆垃圾数据。
1.1 写采集规则时要加「容错小开关」
朋友之前爬数据总失败,后来我看他规则,没开容错。
容错开关是什么?说白了就是告诉系统,遇到缺图、缺价格的内容,是直接跳过还是用默认值填上,别卡壳停了。
具体操作:
1. 进PHPCMS后台,点「内容」-「采集管理」-「添加采集点」(或者改已有的)
2. 翻到页面最下面的「采集配置」区域
3. 把「遇到错误跳过当前URL」和「内容为空时生成空内容」都勾选上
举个例子:你爬外卖满减,偶尔有商家没标满减门槛,勾选后系统就会自动跳过这条,或者你可以在规则里给门槛加个默认“0”(不过建议直接跳过,空内容占地方)。
1.2 先手动采集3-5条测试,没问题再批量
很多人写好规则直接开批量,结果发现所有标题都是乱码,白忙活半天。
正确的顺序是:
1. 写好规则先点「测试单条」,选一条目标网站的最新链接
2. 等测试结果出来,逐字逐句检查:标题、正文、图片、发布时间有没有对
3. 测试2-3条不同商家/不同位置的链接,没问题再点「开始采集」选10-20条小批量
4. 小批量没问题再准备定时。
避坑提醒:测试单条时,如果图片显示“无法获取”,大概率是目标网站加了防盗链,你可以在采集规则的「图片采集」里把「替换图片地址为本地」改成「不替换,直接引用」(不过要注意侵权问题),或者去后台「系统设置」-「安全设置」里关一下防盗链检测,但这个只对采集时下载图片有用,关了自己网站的图片也容易被盗,慎用。
2. 小白首选:用「宝塔面板计划任务」(90%的人都能用)
如果你用的是国内常见的云服务器(阿里云、腾讯云、华为云),大概率装了宝塔面板,这个工具连我妈都能学会操作。
2.1 先找到PHPCMS的「定时采集入口文件路径」
这个路径是固定的,不用你改代码,直接复制就行:
你的网站根目录/phpcms/modules/collection/crons/collection.php
举个例子:你的网站在宝塔的/wwwroot/meishi文件夹里,那完整路径就是/wwwroot/meishi/phpcms/modules/collection/crons/collection.php
避坑提醒:别找错文件!别找成collection/index.php,那个是后台的采集管理页面,不是执行文件。
2.2 在宝塔面板新建计划任务
1. 打开宝塔面板,点左侧「计划任务」
2. 任务类型选「访问URL」或者「Shell脚本」,小白选访问URL更简单
3. 任务名称随便填,比如“美食号凌晨3点爬团购”
4. 执行周期选你需要的,比如每天凌晨3点0分,就点「每天」-「小时」选3,「分钟」选0
5. URL地址填什么? 这里要注意,别直接填入口文件的服务器路径,要填你网站的「伪静态?不对,动态也行,加上参数的地址」
比如你的网站域名是meishi.com,那URL就是http://meishi.com/index.php?m=collection&c=crons&a=collection
如果你的网站后台加了访问密码(比如宝塔的安全入口后缀),那得去掉密码后缀,不然访问不了
6. 填好后点「提交」,然后点「执行」测试一下,看看后台「采集管理」-「采集记录」里有没有新的采集记录
避坑提醒:访问URL的方式有个小缺点,如果你的服务器网络卡,或者目标网站响应慢,可能采集到一半就断了。如果遇到这种情况,就改成「Shell脚本」任务,脚本内容填:
```
/www/server/php/你的PHP版本/bin/php /wwwroot/你的网站文件夹/phpcms/modules/collection/crons/collection.php
```
比如你的PHP版本是7.4,网站在meishi文件夹,脚本就是:
```
/www/server/php/74/bin/php /wwwroot/meishi/phpcms/modules/collection/crons/collection.php
```
PHP版本号在哪看?宝塔左侧「软件商店」-「已安装」-找到PHP,后面的数字就是。
3. 进阶版:用「Linux系统自带的crontab」(没装宝塔也能用)
如果你没装宝塔,或者嫌宝塔占内存,就用Linux自带的crontab,这个更稳定,就是需要敲两行命令。
3.1 先打开crontab编辑页面
1. 用SSH工具(比如Xshell、FinalShell,或者宝塔的「终端」)连上你的服务器
2. 输入命令:crontab -e,然后回车
3. 如果是第一次用,会让你选编辑器,选数字3对应的nano(这个最友好,新手不会懵),然后回车
3.2 输入定时执行的命令
命令格式很简单,分5个时间参数,加1个执行脚本的命令:
```
分 时 日 月 周 /www/server/php/你的PHP版本/bin/php /wwwroot/你的网站文件夹/phpcms/modules/collection/crons/collection.php
```
每个时间参数用空格隔开,意思分别是:
- 分:0-59
- 时:0-23
- 日:1-31
- 月:1-12
- 周:0-7(0和7都是周日)
举个例子:
1. 每天凌晨3点0分采集:0 3 后面加脚本
2. 每2小时采集一次:0 /2 后面加脚本
3. 每周一、三、五的早上8点采集:0 8 1,3,5 后面加脚本
输入完后,按Ctrl+O保存,然后按回车确认文件名,再按Ctrl+X退出编辑
3.3 检查定时任务有没有设置成功
输入命令:crontab -l,然后回车,能看到你刚才输入的命令就说明成功了
避坑提醒:敲命令的时候一定要注意空格,分、时、日、月、周之间,还有时间参数和脚本之间,都必须是一个半角空格(就是英文输入法下的空格),不然会报错。
最后再给你梳理一遍,别搞反顺序:
1. 先写采集规则,加容错,手动测试3-5条
2. 再选定时工具:有宝塔用访问URL,卡壳用Shell脚本;没宝塔用crontab
3. 定时设置好后,先手动点一次执行(宝塔点执行按钮,crontab可以先把时间改成最近的1分钟测试),看看后台有没有采集记录
4. 没问题就可以安心睡觉了
今天晚上就去试试,明天早上起来就能看到新数据,不用再熬夜啦。如果遇到问题,可以在评论区留个言,我看到会回的。