问:搬家后采集器突然报错“无法获取列表”,源头服务器明明能Ping通,到底卡在哪?
你先别急着怀疑采集源挂了,我遇到过最荒唐的事——搬家时把/data/crontab/下的缓存文件打包漏了,导致定时任务调用的是旧服务器的IP白名单。操作指引:立刻检查application/database.php里的数据库连接信息,尤其是host字段,如果新服务器数据库是本地,千万别填localhost,改填0.0.1或具体内网IP,否则PHP解析时会绕一圈,接着打开/admin/cj/下的采集脚本,看第一行include路径是否写死成旧路径,用一条命令根治:find ./ -type f -name "*.php" | xargs grep "旧域名",把残留硬编码全部替换,如果采集URL返回空,八成是防火墙封了目标采集端口(比如8080或自定义端口),去宝塔安全组里放行访问所有端口的临时规则,跑一次采集后再收紧。
问:采集源一直返回“403 Forbidden”,但用浏览器直接访问链接却能打开?
苹果CMS搬家后采集全崩?三天三夜排错实录,这些坑你一定也踩过
你被反爬了,很多资源站会检测User-Agent和Referer,苹果CMS默认的CURL请求头太干净。修改技巧:打开/lib/cj/下的采集器核心文件cj.php,找到curl_setopt配置块,在CURLOPT_USERAGENT那一行后面加一条:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Referer: https://目标采集源域名/'));
如果还不奏效,把User-Agent伪装成手机浏览器,比如Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36,另外检查资源站是否限制了IP区域——部分采集源只允许国内某几个省份访问,搬家的服务器如果迁到了境外或不同城市,直接挂代理采集,你可以在服务器上装个proxychains4,配置一条香港HTTP代理,然后在采集命令前加proxychains4 php index.php/admin/cj/index.html,强行换IP。
问:对接新资源站时,明明按教程填了接口地址,但视频缩略图全是裂的?
这是资源站对接最阴间的坑——图片防盗链,苹果CMS在获取图片URL时,默认是原站地址,但对方服务器会校验域名白名单。操作指引:进后台“系统-图片设置”,把“开启防盗链”关掉,然后开启“图片本地化”,如果你的新服务器硬盘吃紧,建议改走“反代模式”:在Nginx里加一条location /remoteimg/ { proxy_pass https://原图服务器/; },图片链接改成你域名的反代地址,既省带宽又绕开防盗链,另外注意接口返回的字段名称,比如有的资源站用vod_pic,苹果CMS默认用vod_img,你需要在采集器配置的“数据映射”里手动改键值,否则抓不到图。
问:定时采集任务总在凌晨3点卡死,手动执行却秒跑完?
排错排到血压爆表的问题,大概率是内存或MySQL连接数被挤爆了,凌晨往往是服务器资源争抢高峰期,尤其是你用crontab设了整点执行,一堆站点同时跑采集。操作指引:先把宝塔计划任务的时间改成随机秒数,比如30 3 * * *(凌晨3点30分),避开尖峰,然后进/usr/local/php/etc/php.ini,把memory_limit从128M提到256M,max_execution_time设成0(不限时),如果还卡,在采集脚本开头加一句set_time_limit(0);强制无时间限制,最后一个绝招:用screen命令创建守护进程跑采集,screen -S caiji && php index.php/admin/cj/index.html,断开SSH也不会死。
问:采集源频繁改规则,今天能跑明天就空,怎么搞备用源?
别把鸡蛋放一个篮子里,我长期维护三个梯队:首选源(稳定但更新慢,比如最大的几家资源站)、次选源(快但偶尔断连,比如某些个人站)、兜底源(慢但全量,比如用第三方API二次封装的)。推荐思路:首选源用DPlayer(抖音接口)类,次选源去GitHub搜苹果CMS 资源站合集,找最近三个月有commit的项目,兜底源直接对接豆瓣API(虽然不能直接播放,但列表数据永不失效),配置时务必在每个资源站描述里标注入库优先级,云播1”设权重100,“云播2”设50,还要准备一个自动切换脚本:在/data/crontab/里写一段PHP,每天凌晨检查各资源站的首页能否正常返回200,断链的自动降权重,并邮件通知你手动补源。
问:搬家后资源自动关联失败,同一个演员在不同采集器里重复建了10遍?
这是苹果CMS最底层的设计缺陷——它没有全局聚合重复数据的能力。修改规则:进后台“采集-替换规则”,把“演员”“导演”的字段设为“关联入库”,再用SQL查SELECT actor_name, COUNT(*) FROM mac_actor GROUP BY actor_name HAVING COUNT(*) > 1;,手动清理多余行,一劳永逸的做法是给采集器写一个去重钩子:在application/common/model/下的Collect.php里,找到insertData方法,在入库前加一段if(模型已存在该名称) {更新ID覆盖;},如果你不会改PHP,就直接在资源站配置里勾选“仅更新,不新增”,代价是漏掉首次入库的新片。
(结尾可以加一句忠告,但不要划水:“资源站崩是常态,备份好采集规则文件/data/cj/,比求爷爷告奶奶有用100倍。”)



发表评论