次のような単純なコードが与えられます:
$file = 'hugefile.jpg';
$bckp_file = 'hugeimage-backup.jpg';
// here comes some manipulation on $bckp_file.
想定される問題は、ファイルが大きいか巨大である場合(たとえば、jpg)、サーバーがファイルをコピーするのに時間がかかると思われることです(つまり、数ミリ秒でもかまいません)。次の行の実行がはるかに高速になること..したがって、理論的には、まだ作成されていないファイルを操作しようとすると、「そのようなファイルまたはディレクトリはありません」というエラーが発生する可能性があります。さらに悪いことに、TRUNCATEDファイルの操作を開始します。 。
私の質問は、$ bckp_fileがそれを操作する次の行の前に正常に作成された(またはこの場合はコピーされた)ことをどのように保証できるかです。
ファイルの作成/コピーが完了するまで、次の行の実行を「一時停止」、「遅延」するための私のオプションは何ですか?
今、私は次のようなことしか考えられません
if (!copy($file, $bckp_file)) {
echo "failed to copy $file...\n";
}
これは私に警告するだけですが、何も解決しません(phpエラーがあるのと同じです)
また
if (copy($file, $bckp_file)) {
// move the manipulation to here ..
}
しかし、これもそれほど有効ではありません-コピーが実行されなかったとしましょう-私は目標を達成せず、エラーもなくループから抜け出します。
それも問題ですか、それとも私はそれを考えすぎていますか?それとも、PHPにはそれを確実にするための組み込みメカニズムがありますか?推奨される方法はありますか?この問題について何か考えはありますか???