ホームページ > バックエンド開発 > PHPチュートリアル > ディレクトリトラバーサルといいねクエリについて

ディレクトリトラバーサルといいねクエリについて

WBOY
リリース: 2016-06-23 13:37:49
オリジナル
1106 人が閲覧しました

友人が現在問題に遭遇しています。画像ファイルを保存するディレクトリがあり、ディレクトリ構造は /uploads/avator/140320/*.jpg です。つまり、avator にはプロジェクトにちなんだ名前のサブディレクトリが多数あります。ディレクトリ、おそらく数百。 avator ディレクトリ全体には約 8W のファイルが含まれており、ファイル
の一部は役に立たないジャンク ファイルなので、それらを削除したいと考えています。
このディレクトリ内のほとんどのファイルには、フル パス、つまりパス + ファイル名を記録するテーブル内に img_url フィールドがあります (例: /upload/avator/140320/bid001.jpg)。

彼が今行っていることは、ディレクトリを走査してすべてのファイル名を取得し、テーブル select を検索して img_url をチェックし、返されたレコードの数が 0 に等しい場合は、ファイルを削除します。ディレクトリ。

テーブルには 60,000 件を超えるレコードがあります。

約2Wのファイルを削除できるということです。

しかし、実行の観点から見ると、ディレクトリの移動は非常に高速ですが、遅すぎるように思えます。 。もっと良い、より速い方法はありますか?

img_url フィールドにはインデックスが付けられています


ディスカッションに返信 (解決策)

完全なパスがテーブルに保存されているのに、それでも気に入っているのはなぜですか?直接 = いいえ、その方が速いです


ディレクトリ glob('/uploads/avator/*/*.jpg') を読み取り、一時テーブルに置きます
この一時テーブルを使用して、右側のテーブルがデータ テーブルである場合は、データ テーブルを左に接続します。 null の場合は削除する必要があります。ファイル

img に src="" がある場合、一部のブラウザでは x が表示されます。したがって、img の src を空に設定することはお勧めできません。より良い解決策は、画像要素ノードを削除することです。

Buzhu が直接言ったように、% で始まる「いいね!」はインデックス作成を有効にしません =

または、角度を変えて、データベースを横断し、有用な写真を新しいフォルダーに切り取ってください。そうすれば、わかります

アドバイスありがとうございます

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート