我的数据库中有大约600,000个帖子,所有帖子都包含指向图像的链接。在这些帖子的大约1%中,图像被破坏(它们被取下或移动或其他)。我需要一种快速的方法来浏览所有图像并删除已经破坏图像的帖子。到目前为止,这是我的代码:
class Post < ActiveRecord::Base
..unrelated code truncated
def self.clean_broken_images
Post.with_image.find_each do |post|
response = HTTP.get(post.image)
post.destroy if response == 404
end
end
end
这样可行,但正如您所料,它的速度非常慢(我还没有真正让它完成)。
有更快的方法吗?例如:只返回响应标头,如果它是404,则删除它?使用Typhoeus / Hydra(不确定我能为这么多的帖子做到这一点)?我还应该提一下,我正在推迟工作。
谢谢!
答案 0 :(得分:2)
您是否需要主动从数据库中删除帖子? 您可以等到它们被请求并使用一些javascript来加载图像。如果找不到图像,请让脚本向服务器发出DELETE请求以获取相应的帖子。