这是零代码的基础防重方案,不用修改数据库或代码,1分钟就能配置完成,适合新手和轻度采集场景,步骤如下:
你的域名/admin.php,输入账号密码进入后台后台配置的防重是业务层判断,遇到大批量采集可能会出现判断失效的问题,添加数据库唯一索引是从底层限制重复数据插入,100%杜绝重复,是最稳定的防重方案,步骤如下:
mac_,不需要修改,直接执行即可:mac_vod改成你自己的表名即可,比如前缀是maccms_,就改成maccms_vod执行成功后就完成了,此时数据库会自动拒绝插入相同标题+相同来源的重复数据,从根源杜绝重复问题。如果执行报错,提示「重复键值」,说明你当前数据库已经存在重复数据,需要先按照方法三清理完重复数据后再执行该语句。
如果你的站点已经采集生成了大量重复数据,可以直接执行SQL语句批量清理,全程不到1分钟,不需要手动删除,步骤如下:
执行后会输出所有重复的数据列表,如果显示结果符合你的预期,再执行删除语句,删除重复数据时会自动保留最早采集的那一条,仅删除后面的重复内容:
``` DELETE t1 FROM mac_vod t1 INNER JOIN mac_vod t2 ON t1.vod_name = t2.vod_name AND t1.vod_play_from = t2.vod_play_from WHERE t1.vod_id > t2.vod_id; ```如果你的mysql版本较低,执行上面的删除语句报错,用兼容所有版本的以下语句代替:
``` DELETE FROM mac_vod WHERE vod_id NOT IN (SELECT MIN(vod_id) FROM mac_vod GROUP BY vod_name,vod_play_from); ```
执行完成后,回到苹果CMS后台,点击系统 → 更新缓存,清理缓存后就完成了,所有重复数据都已经清理完成。
如果加了唯一索引还是出现重复,一般是重复判断的字段不对,部分采集规则中相同标题不同播放链接也会生成多条,你可以把唯一索引的判断字段改成标题+播放链接,修改后的SQL语句如下:
添加唯一索引:
``` ALTER TABLE `mac_vod` ADD UNIQUE INDEX `unique_vod_check` (`vod_name`, `vod_play_url`); ```删除重复数据语句:
``` DELETE t1 FROM mac_vod t1 INNER JOIN mac_vod t2 ON t1.vod_name = t2.vod_name AND t1.vod_play_url = t2.vod_play_url WHERE t1.vod_id > t2.vod_id; ```完全通用,仅需要修改表名即可,苹果CMSv8默认表前缀是maccms_,把所有语句中的mac_vod改成maccms_vod即可,核心逻辑完全一致。
按照流程落地即可:新站还未开始采集,先做方法一配置,再做方法二加唯一索引,就能彻底避免重复;已经有重复数据的站点,先做方法三清理重复,再做方法二加索引防后续重复,全程不需要复杂操作,按照步骤粘贴代码就能完成。












易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图