2台以上のサーバーが同時に同じファイルを書き込むしようとした場合、何がNFSになりますか?
-
26-09-2019 - |
質問
私は画像の自動サイズ変更を行うPHPのWebアプリケーションに取り組んでいると私はNFS上のキャッシュされたコピーを保存すると思っていますがNASを搭載しています。
私が心配してる唯一のものは、クラスタ内のサーバの2以上が、
?同時に同じ画像のキャッシュファイルを作成しようとしている場合はNFSと一般的には何が起こるかでありますキャッシュは、彼らがそのように衝突することができるとコンテンツの更新のためにフラッシュされることをかなり良いチャンスがありますが、私はただ一つのボックスに働いているので、私は開発でこのシナリオをテストするための素晴らしい方法を持っていません。
この上の経験をお持ちの方?
解決
それはあなたがファイルを開く方法によって異なります。あなたは「APPEND」モードでファイルを開く場合は、改行文字を作成するまで、その後のUnix / Linuxは、実際にキャッシュに内容を書き込みます、それは(「過剰書き込み、ファイルの終わりまでに新しい行をスティックファイルの終わり」バイトパターン)と、新たな書き込み 『ファイルの終わりを』。この場合、二人は、彼らが受け取った順序で一度に自分自身に1本のラインを取り付け、通過します同時に、同じファイルへの書き込みに書き込み線の両方をしようとした場合。したがって、あなたのような何かを期待できます:
This was the old contents
of the file
The first script added
The second script added
this line (script 1)
this line (script 2)
二つの「書き込み」コマンドが(ナノ秒の精度まで)正確に同じ時間に到着することは稀な機会には、オペレーティングシステムは、実際に割り込み状態を作成します。それは、これをどのように処理するかOSまでだが、ほとんどは単に最初行く人を決定する2つの乱数を生成します。
あなたは(あなたが真ん中にコンテンツを追加したいと言う)「書き込み」モードでファイルを開いた場合、あなたが実際にこれを行うには、ファイルをロックする必要があります。二PHPスクリプトは、ファイルを開くことができませんでしたというエラーがスローされます。