3

HTTP リクエスト間で持続するモデルを使用して Web アプリケーションを作成したいと考えています。私が理解していることから、PHP のような言語は、SESSION のようないくつかのグローバル変数を除いて、各 HTTP リクエストをまったく新しい接続として扱います。そのため、ユーザーがページを変更するたびに、すべての PHP クラスが再びメモリに読み込まれます (そして、各 AJAX リクエストもこれを行います)。毎回データベースから構築する必要があります。

私は間違っていますか、それとも四角形に円を合わせようとしていますか? Memcached は、ページ リクエスト間でモデルをメモリに保持するための優れたソリューションのようですが、それでもキャッシュをロードする必要があります。PHP CLI は有望なように見えましたが、詳しく調べてみると、価値があるよりも問題が多いように思えました。助言がありますか?

4

2 に答える 2

4

Web アプリケーションで永続的な状態を要求することは避けてください。HTTP はステートレスであり、それを中心にビジネス ロジックを設計する必要があります。また、PHP はデーモンとして機能したり、長期間実行したりすることを意図していないため、メモリ リークに対してあまり安全ではありません。PHP 変数の情報のデータベースを維持するべきではありません。高価なクエリ結果を memcache にキャッシュし、ほとんど待機時間なしで取得できます。

モデルをシリアライズしてセッション (または memcache) に保存し、次のリクエストでデシリアライズして、リクエスト間で関連する変数をスコープ内に保つことができます。アプリケーションの詳細についてもう少し共有していただければ、これを処理する最善の方法を見つけるお手伝いができるかもしれません。

于 2011-02-20T04:52:25.600 に答える
1

リクエスト間で状態を共有しないようにする必要があることに同意します。ただし、まれに、HTTP 経由で単純なメッセージ キューを実装する場合など、この機能を手元に置いておくことが望ましい場合があります。

php の場合、php_shmop 拡張機能を介して IPC を使用できます。

nodejsの場合、これを見つけまし

于 2013-03-29T16:39:08.420 に答える