PHP アプリケーション用の一種の高速キャッシュ メカニズムを実装する必要があります。これは次のように機能します。複数のノード サーバーが中央サーバー (VIA JSON サービス) からデータを要求しています。ノードサーバーは、高速で効率的な方法で応答をファイルシステムにキャッシュする必要があります。それが問題です - ストレージ部分の最適なソリューションは何でしょうか。私はいくつかのタイプを持っています-XML(多くのレコードでは非効率になる可能性があると聞きました)、コンテンツを含む配列定義をPHPファイルに保存するか、レコードの配列をファイルにダンプするだけです。そのシナリオで最も効率的なのはどれですか? それとも何か他のものですか?追加のライブラリやSQLを使用せずに、クリーンなPHP> = 5.2に実装する必要があることに注意する必要があります。
2 に答える
あなたが提供した情報を考慮して、JSON 文字列をファイルに単純にダンプすることをお勧めします。これは、外部ライブラリや SQL エンジンが必要ないことを意味します。
「人間が読める」ものも必要な場合は XML を使用できますが、XML はそれほど高速ではなく、もちろん、データ キャッシュを保存する前に XML の生成に追加の時間を費やさなければなりません。
読み取りは、ファイルから文字列を取得し、json_decode を実行する場合にすぎません。データ全体ではなく一部のみが必要な場合は、json オブジェクトをブロックに分割し、個々のファイルに書き込むことで読み取りパフォーマンスを向上させることができます。より良い。
ext2 ファイルシステムで構成されたパーティションに書き込むことで、書き込み速度をさらに向上させることができます。
ただし、大規模なデータ セットと複数のキャッシュ ファイルを操作しない限り、そのような最適化の範囲に行く本当の理由はなく、json をファイルに文字列として書き込み、それを読み戻すだけで十分です。
1つのアプリケーションのみのコンテンツをキャッシュするためのXMLファイルを生成しないでください。XMLの生成と解析のオーバーヘッドが発生し、必要なバイト数が大幅に増加します。
PHPファイルの生成は効果的ですが、いくつかの問題があります。-解析エラーの可能性-データを2回キャッシュする可能性があります(ファイルシステム-OSのキャッシュ+ PHP-オペコード-キャッシュ)
キャッシュファイルは、構文解析のセマンティクスが低く、非常に効果的であるため、単純なシリアル化されたPHPデータとして記述したいと思います。igbinaryやmgspackなどのバイナリシリアライザーを使用して高速化することもできます。
ところで:別のWebノード上のリモートサービスからデータをキャッシュする場合は、memcachedのようなキャッシュサーバーを使用することをお勧めします;)