0

非常に初歩的な質問: phpは??file_exists($path)のサブディレクトリをチェックしますか?$path

ディスクの読み取りが集中するプロセスですか? チェック対象のディレクトリ内のフォルダ/ファイルの数に応じて、直線的に(多項式/指数関数的に)増加することを意味しますか?

背景情報: EC2 でいくつかのファイル操作スクリプトを実行しています。スクリプトを開始してから、読み取り操作が指数関数的に増加し続けています。AWS は 100 万 I/O リクエストあたり $0.11 を請求し、コストは急速に増加しています :(.

私はコードを分析しました。この種の増加するパフォーマンス損失の問題を引き起こす可能性がある唯一の部分は、ファイルが存在するかどうかをチェックするか、S3 バケットからファイルをダウンロードするスクリプトの部分であると思います。小さな読み取り操作。関連性があれば、それぞれ3〜5 MBのファイルが1万個あります。各サイクルの後、スクリプトは同様のサイズのファイルをさらにいくつか生成します。

編集:ジムのポイントを明確にするための修正

編集 2:私が求めているパフォーマンスは、スクリプトの実行時間ではなく、AWS によって別途請求されるディスク読み取りの数です。

4

3 に答える 3

1

file_exists($path)サブディレクトリはチェックしません。これを行うには、ディレクトリをナビゲートする独自の関数を作成する必要があります。

絶対パスまたは相対パスを指定しない限り、現在のディレクトリ (.php ファイルがある場所) をチェックインします。

ファイルまたはディレクトリをそれぞれチェックしているかどうかをis_file()使用する必要があります (おそらく使用したい) 。is_dir()


file_exists()また、 (またはis_file()または) のパフォーマンスの面ではis_dir()、それらは間違いなく集中的な関数ではなく、PHP スクリプトのボトルネックになるとは思いません。

于 2013-07-26T13:28:43.230 に答える