のような簡単なコードを考える:PHP - 正しいコマンド実行順序を保証するためにどのように
$file = 'hugefile.jpg';
$bckp_file = 'hugeimage-backup.jpg';
// here comes some manipulation on $bckp_file.
仮定の問題は、ファイルが大きいか巨大である場合ということです - let'sがjpgを言う - 一つは、と思うだろうがサーバーをコピーするのに時間がかかります(時間がたっても数ミリ秒かかることもあります)。しかし、次の行の実行がはるかに速くなるとも仮定します。 したがって、理論上 - 私は "noまだ作成されていないファイルを操作しようとしたときにエラーが発生する - 悪化する - TRUNCATEDファイルを操作し始める。
私の質問は、それを操作するNEXT行の前に$ bckp_fileが作成された(またはこの場合はコピーされた)ことをどのようにして保証することができますか?
ファイルの作成/コピーが完了するまで、次の行の実行を「一時停止」、「遅延」するオプションは何ですか?
今、私は唯一の私だけに警告しますが、(PHPのエラーを持つように同じ)は何も解決しません
if (!copy($file, $bckp_file)) {
echo "failed to copy $file...\n";
}
のようなものを考えることができ
または
if (copy($file, $bckp_file)) {
// move the manipulation to here ..
}
しかし、これはあまり有効でもありません。なぜなら、コピーが実行されなかったと言いますから、私は自分の目標を達成することなく、エラーなくループから脱出するだけです。
それも問題ではないのですか、それとも私はそれを熟考していますか? また、PHPにはbulit-inメカニズムがありますか? おすすめの方法はありますか? 問題に関するご意見はありますか? ??
答えに感謝します。質問の範囲から外れるものは何もありません - 私はもっと学び、より多くのことを理解しようとしているからです:-)。質問で言及されたもう1つの問題 - TRUNCATEDファイルの場合はどうですか? php-synchronous-mechanisemも整合性をチェックしますか?再び理論上 - .jpgファイルを作成して保存/コピーすることはできますが、偽の情報が含まれています(私たちはネットから半透明のjpgを見ました)。 –
私の答えは非同期IO :) – Corbin