7

大規模なPHPアプリケーションでファイルに書き込むための最良の方法は何ですか。1秒あたりに必要な書き込みがたくさんあるとしましょう。これを行うための最良の方法はどのようになっていますか。

ファイルを開いてデータを追加するだけでいいですか。または、開いて、ロックして、書き込み、ロックを解除する必要があります。

ファイルの処理が行われ、他のデータを書き込む必要があります。このアクティビティは失われますか、それとも保存されますか。これが保存される場合は、アプリケーションを停止します。

読んでいただきありがとうございます!

4

7 に答える 7

6

すべてのスレッドが 1 つのログ ファイルに書き込み (追加) する高性能なマルチスレッド アプリケーションがあります。各スレッドは毎秒複数回書き込み、何も失われません。巨大なファイルに追加するだけで問題ないと思います。しかし、既存のコンテンツを、特に並行処理で変更したい場合は、ロックを使用します。そうしないと、大きな混乱が発生する可能性があります...

于 2010-03-01T20:32:05.387 に答える
4

同時実行性が問題になる場合は、実際にデータベースを使用する必要があります。

于 2010-03-01T20:28:01.777 に答える
1

ログを書いているだけの場合は、 syslogが API を提供するため、 syslog関数を調べる必要があるかもしれません。また、書き込みを専用のバックエンドに委任し、非同期で作業を行う必要がありますか?

于 2010-03-29T13:46:24.550 に答える
1

これらは私の2pです。

特定の理由で一意のファイルが必要でない限り、すべてを巨大なファイルに追加することは避けます。代わりに、ファイルを時間と次元でラップします。これには、いくつかの構成パラメーター (wrap_time と wrap_size) を定義できます。

また、書き込み操作が完了するのを待つのを避けるために、おそらく何らかのバッファリングを導入するでしょう。

おそらく PHP は、この種の操作に最も適した言語ではありませんが、可能性はあります。

于 2010-03-29T13:57:33.013 に答える
0

flock()を使用する

この質問を参照してください

于 2010-03-01T20:28:15.600 に答える
-3

データを追加する必要があるだけの場合、ファイルシステムが同時追加を処理する必要があるため、PHP はそれで問題ありません。

于 2010-03-01T20:29:05.443 に答える