删除大型数据库中的出站链接

时间:2013-08-06 17:15:32

标签: php regex

我有一个很大的Wordpress网站(> 10,000个帖子),我想从帖子中删除所有出站链接+锚文本。

我能够编写通过正则表达式搜索来完成工作的内容并替换每个帖子。但是因为我有这么多帖子,这个脚本几乎没用(内存问题和共享服务器上的执行时间)。

在耗费最少内存的情况下,对数据库进行正则表达式搜索和替换的最佳方法是什么?我可以通过mysql进行正则表达式搜索和替换吗?

您是否还可以确认这是匹配除“mysite.com”之外的所有链接的正则表达式(内部链接除外):

(<a.*>)(?!mysite\.com)(.*)(<\/a>)

1 个答案:

答案 0 :(得分:1)

如果我遇到同样的情况,我会编写一个可以批量处理数据的脚本。这使您的脚本更具性能,如果您正在运行复制,将确保它不会导致下游的复制延迟。

我建议分批进行200次工作(使用OFFSET和LIMIT进行读取查询),然后在2-5秒内休眠,然后处理下一批。

我不会说你提供的正则表达式,因为错误的回复会导致你的链接被破坏。我还建议你编写一个小的测试脚本,其中包含一些示例链接,你可以测试正则表达式,一旦你将其锁定,然后将其添加到主脚本。