2011-07-24 9 views
1

特定のディレクトリを調べてファイルが存在するかどうかを確認し、存在しない場合は、別のディレクトリからそのファイルをコピーします。基本的に2つのフォルダを同期します。 file_exists()関数を使ってPHPで簡単に処理できます。しかし、ディレクトリには約2万のファイルが存在するので、これはハードドライブ(多くの読み込み???)に悪いと感じる。これは意味をなさないか、それとも心配することはありませんか?PHP:disk_exist()呼び出しでディスクを大量に使用していますか?

+4

PHPと同期する理由はありますか? 'rsync'があります。 –

+0

もしそれが問題であると分かったら(私はそれがわからない)、ディレクトリの内容を 'readdir'または' glob'して配列にし、PHP内から存在するかどうかを調べることができます。 –

+0

特定のアプリケーションでこれを行う必要があります。しかし、@ casey-hope、あなたのソリューションは動作します!ありがとう!これを答えに入れることができれば、答えとしてマークすることができます。 – user852091

答えて

1

(例えば、比較するファイルのリストを作成する)(そしてそれがない場合、私は知らない)配列にディレクトリの、あなたは可能性readdirglob内容をとそれがwithiから存在するかどうかをチェックするn PHP。そうすれば、20,000回ではなく1回だけディスクから読み取ることができます。

0

多くのファイルに対してfile_exists()を呼び出すかどうかについてはコメントできませんが、代わりにis_file()と考えるとよいでしょう。結果はキャッシュされているので、あなたが望むことをやるのに集中力のない方法と考えることができます。

1

PHPはこのようなタスクにはあまり適していません。

あなたはrsyncまたはxcopyのように、いくつかのシェルコマンドを実行してみてください可能性があります

exec('xcopy c:\\mydir d:\\mydir /e/i', $a, $a1); 

おそらく、gitのようないくつかのVCSは、この場合に最適なソリューションとなります。あなたはまだPHPでこれを行う必要がある場合

、二つのことは覚えて:

  • これは(遅い)リソースの多くを取る
  • 何でも最適な解決策ではありませんいくつかの種類を使用して最適化することができますキャッシュのそれが心配であることが判明した場合
関連する問題