抓取大量图片,判断是否损坏
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.
我的数据库中有大约 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.