2

イメージの自動サイズ変更を行う PHP Web アプリケーションに取り組んでおり、イメージが更新されたときにキャッシュを簡単にフラッシュできるように、キャッシュされたコピーを NFS マウントされた NAS に保存することを考えています。

私が唯一心配しているのは、クラスター内の 2 つ以上のサーバーが同時に同じイメージ キャッシュ ファイルを作成しようとした場合、一般的に NFS で何が起こるかということです。

コンテンツの更新のためにキャッシュがフラッシュされると、そのように衝突する可能性がかなりありますが、私は単一のボックスでしか作業していないため、開発中にこのシナリオをテストする優れた方法がありません.

これについて経験のある人はいますか?

4

1 に答える 1

5

ファイルを開く方法によって異なります。ファイルを「追加」モードで開いた場合、Unix/Linux は、改行文字を作成するまで実際にコンテンツをキャッシュに書き込み、ファイルの最後に改行を貼り付けます (" end-of-file" バイト パターン) を作成し、新しい "end-of-file" を書き込みます。この場合、2 人が同時に同じファイルに書き込もうとすると、両方の書き込み行が実行され、受信した順序で一度に 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)

2 つの「書き込み」コマンドがまったく同時に (ナノ秒の精度まで) 到着するというまれな可能性があり、オペレーティング システムは実際に割り込み状態を作成します。これをどのように処理するかは OS 次第ですが、ほとんどの場合、どちらが先に進むかを決定するために 2 つの乱数が生成されます。

ファイルを「書き込み」モードで開いた場合 (たとえば、コンテンツを途中に追加したい場合)、これを行うには実際にファイルをロックする必要があります。2 番目の PHP スクリプトは、ファイルを開けないというエラーをスローします。

于 2010-09-30T16:51:28.223 に答える