2

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

谢谢!

4

1 回答 1

2

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

于 2015-02-22T23:21:06.517 回答