私のデータベースには約 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 を使用しますか (この大量の投稿に対してこれを実行できるかどうかわかりません)。また、遅延ジョブでこれを実行していることにも言及する必要があります。
ありがとう!