抓取大量图片,判断是否损坏

Fetching a large number of images, determining if they are broken or not

我的数据库中有大约 600,000 篇帖子,所有帖子都包含 link 图片。在大约 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

这可行,但如您所料,它出奇地慢(我实际上还没有让它 运行 完成)。

有没有更快的方法?例如:仅 return 响应 header,如果是 404 则删除?使用 Typhoeus/Hydra(不确定我是否可以为如此大量的帖子执行此操作)?我还应该提一下,我 运行 这个工作延迟了。

谢谢!

您需要主动从数据库中删除帖子吗? 您可以等到它们被请求并使用一些 javascript 来加载图像。如果找不到图像,请让脚本向您的服务器发出 DELETE 请求以获取适当的 post.