2017-02-17 5 views
1

私は以前にJava Webアプリケーション(Spring、Spring Boot)を開発していましたが、メモリにキャッシュされた多くのデータを保持して、サポートできる同時ユーザー数と効率を大幅に向上させました。 PHPアプリケーションは同じを達成することができますか?PHPアプリケーションはどのようにデータをメモリに保持できますか?

これを行うグローバルな方法はありますか、またはセッション変数を使用するのが最も良い方法ですか?

+1

セッションは、同じユーザーの1つの要求から別の要求へのメモリです。複数のユーザーに対してセッションを使用してキャッシュを格納することはできません。 –

答えて

3

PHPは単一ページ言語です(WEBについて話している場合)。 このhttp://php.find-info.ru/php/016/ch20lev1sec5.htmlを見て、このhttp://www.slideshare.net/laruence/the-php-life-cycle

あなたは(DBに問い合わせをすることなく、同じようたびに(すべての要求を))をリアルタイムでメモリにキャッシュされたデータの多くを保持する必要がある場合、あなたはいくつかのメモリ・ベースを使用する必要がありますあなたのコードに永続的な接続を維持するストレージ。

また、PHP変数で多くのデータを使用するときは注意が必要です。ガベージコレクタはうまく動作しますが、小規模なリクエストに対してのみ有効です。強制クリーンアップヒープの場合はunset()式を参照してください。

申し訳ありません英語:

2

カスタムキャッシュクラスを作成して使用することができます(シングルトンクラスは別の解決策かもしれません)。

3

要件によって異なります。もし私があなただったら、リアルタイムの同時データベースのためのディール・ブレーカーであるREDISを好むでしょう。

  • 空のインスタンスredisは〜1MBのメモリーを使います。
  • 1ミリの小さなキー - >文字列値のペアは〜100MBのメモリを使用します。
  • 1億キー - >ハッシュ値、5つの分野、メモリの〜200メガバイト 使用してオブジェクトを表す(あなたが最小200 MBのために100万人の同時ユーザーを持つことができます)

以下はあなたのことができます。ユースケース

  • リアルタイム公開/通知システムに
  • リアルタイム分析のバックエンドを購読
  • タスクキューとジョブシステム
  • ハイスコアリーダーボード
関連する問題