很多用PHPCMS做站的老站长肯定都遇过这破事,前一天刚配置好定时采集规则,设的每小时爬一次行业资讯,结果第二天起来打开后台一看,半条新内容都没更新,手动点采集又能正常跑,折腾半天找不到问题在哪,纯纯搞人心态。
很多人一上来就乱调采集规则,其实90%的情况根本不是规则的锅,是定时任务的触发逻辑崩了。说白了PHPCMS自带的定时采集根本不是真·后台定时任务,完全靠用户访问站点触发,就像你楼下的自动售货机,得有人扫二维码买东西才会触发后台同步库存,要是你新站没流量,半天没一个人访问,那触发个屁的采集任务啊。
要是你站本身有稳定流量还是触发不了,基本就是两个坑:要么是php.ini里的allow_url_fopen没开,要么是后台的采集配置里的cron地址被改错了,或者是admin目录重命名后没更新对应路径。
新站没访客的话就别指望自带的触发逻辑了,直接去服务器加个定时任务就行,亲测10多个站全成,没有例外。
先去后台采集规则页复制你的专属cron触发地址,一般格式是http://你的域名/index.php?m=collection&c=index&a=cron&key=xxxx,后面的key是后台自动生成的校验码,千万别改,改了直接触发失败。
用宝塔面板的话操作更简单,直接去计划任务里加个「访问URL」的任务,频率选你需要的采集间隔,把刚复制的地址粘进去保存就完事。要是用原生Linux服务器,直接输crontab -e加一行规则就行,比如要每半小时跑一次就写:
``` 每30分钟触发一次采集任务 /30 /usr/bin/curl http://你的域名/index.php?m=collection&c=index&a=cron&key=你的后台专属密钥 ```
提个醒啊,别把任务间隔设的比你单轮采集耗时还短,俩任务挤一块直接卡死,到时候啥内容都爬不到还占服务器资源。
先去查下你的php配置,搜下allow_url_fopen是不是开了,很多便宜虚拟主机默认关这个功能,就是怕你爬东西占带宽资源,要是关了就找主机商开,或者自己改php.ini把allow_url_fopen = Off改成On,重启下php服务就行。
这个没问题的话就去看采集规则的超时设置,把默认的10秒超时改成20-30秒,很多目标站服务器响应慢,还没返回内容就被你掐断连接,自然啥都爬不到。
还有个很多人容易忽略的点,你是不是之前为了安全改了后台的admin目录名?改了的话要去collection模块的配置文件里把对应的访问路径也更新了,不然触发的时候路径不对直接404,肯定跑不起来。
要是上面的方法都试了还是掉链子,就别死磕自带的采集模块了,直接整个第三方的采集工具或者自己写个简单的python爬虫,挂定时任务爬好内容之后按照PHPCMS的入库规则导进去就行,效率比自带的模块高多了。我自己之前有个行业资讯站,自带采集老是漏内容还经常卡,换了个小脚本挂定时跑,快半年了没出过一次问题。
还有个小技巧分享给大家,要是你怕采集到重复内容,就在触发采集之前先跑个简单的去重脚本,比对下内容标题的hash值,重复的直接跳过就行,省得占数据库空间还影响用户体验。
我自己手上7个PHPCMS的老站,之前全部踩过定时采集失效的坑,上面这些方法挨个试下来,基本都能解决,真没必要为了这点小事换整个系统,毕竟PHPCMS虽然停更多年,但做内容站的底子还是够用的。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图