我的数据库中有大约 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(不确定我能否为这么多的帖子做到这一点)?我还应该提到,我正在使用延迟的作业来运行它。
谢谢!