こんにちは、
私は、PHPスクリプトとテキストファイルを持っているし、2人のユーザーは、テキストファイルに長いテキスト文字列を追加した場合同じ時間に、何が起こるでしょうか?それはまだ通りますか?それはバッファリングされるので、両方とも追加されるか、落とされますか?
こんにちは、
私は、PHPスクリプトとテキストファイルを持っているし、2人のユーザーは、テキストファイルに長いテキスト文字列を追加した場合同じ時間に、何が起こるでしょうか?それはまだ通りますか?それはバッファリングされるので、両方とも追加されるか、落とされますか?
通常、OSは書き込み中にファイルをロックするので、他のプロセスはこの書き込みプロセスが完了するのを待ってから書き込みを開始する必要があります。
したがって、あるクライアントでは遅延が発生し、fopen()ではPHPの警告/エラーが発生します。コードがどのように機能し、どの機能を使用しているかによって異なります。
c
モードパラメータを使用してfopen
を使用すると、ファイルがfclose
になるまで強制的にロックされます。これにより、複数の人が同時にファイルに書き込むことができなくなります。通常、ファイルシステムはデフォルトで(OSの設定によっては)これを行いますが、modeパラメータを使用するとベースがカバーされます。
仕様は、プラットフォームと、データが書き込まれているの大きさに依存するが、両方のプロセスがファイルの同じ位置に書き込みを開始した場合、最後の一つは、多くの場合、いわば勝ち。しかし、特に大量のデータを一度に書き込む場合、データがインターリーブされることになります。
flock()をご覧ください。オペレーティングシステムは完全に「あなたのために」行うわけではありません。
** PHP Simultaneous File Writes **の可能な複製。その答えは、この質問をもカバーする必要があります:http://stackoverflow.com/questions/1209688/php-simultaneous-file-writes –