たくさんのデータを保存するためのPHPセッション?

php session

私はメディアブックマークサイトを開発していて、ユーザーがアイテムをブックマークしたかどうかを確認する方法を探しています(チェックするためにページを読み込むたびにDBに移動する必要はありません)。

私はこれまでにPHPセッションを使用したことはありませんが、うまくいくと考えています。

ユーザーがログインしたときに最初のDB呼び出しを実行し、ユーザーがブックマークしたすべてのアイテムを取得して、すべてのアイテムIDの配列をユーザーセッションに保存することは意味がありますか?

次に、ページがロードされると、ページ上の100個のアイテムそれぞれについて、そのアイテムのIDがセッション配列に含まれているかどうかがチェックされます(したがって、「ブックマーク」ボタンを表示するか、ブックマークしたことを示すインジケータを表示するかどうか) )

これが正しい戦略であること、またはもっと良い方法があるかどうかを確認してください。 配列内に10,000のIDがあっても、これで問題ないでしょうか。

  1  0


ベストアンサー

同様にあなたはMemcached拡張を見てみることができます – それはデータストレージとしてサーバーのメモリを使います。

6


セッション管理の堅牢性とスピードを向上させるための一般的なPHP戦略は、セッションデータをデータベースに格納することです。 あなたは反対方向に向かっているようです。

4


私はあなたがDBを調べ、セッションにこのデータを保存しないことをお勧めします。 あなたがそこにたくさんの情報があるなら、あなたは高負荷のサイトで本当に速くメモリを詰まらせるでしょう。 キャッシュをするだけで大​​丈夫です。

2


セッションにデータを保存すると、15分後にデータが失われることにもなります(デフォルトですが、変わる可能性があります)。

つまり、データをDBに保存し、その後の読み込みにキャッシュを使用する必要があります。 @ Mark Tylerが言ったようにmemcache。

1


ページロードごとに一度データベースにアクセスするのがどれほど悪いかを過大評価しないでください。 あなたが話していることをするたくさんの(そしてたくさんの)PHPアプリケーションを見つけるでしょう。 多くのアプリケーションがデータベースからページのさまざまな部分を引き出し、ユーザーデータ、フォーラムデータ、ニュースなどを取得します。 そのため、1ページの読み込みで最大30件のクエリを実行できます。

Cookieに一意のIDを保存し、保存するセッション情報をデータベースにスマートに保存します。

あなたは考えすぎているかもしれません。 ここでの良いアプローチはあなたが賢明な方法であなたが必要とする機能を構築することです。 (サーバー側)システムリソース(データベースの負荷、Webサーバーの負荷)を監視し、問題に気付いたら解決するようにリファクタリングします。

1


あなたがばかげて何かをしたい場合はまあ、あなたはページ変更を生き残るいくつかのオブジェクトで、Javascriptを使用してクライアントのブラウザにすべてのデータを格納することができます。 それはあなたに多くの頭痛を追加するので、私はそれをお勧めしませんが、私はそこにすべての奇妙なAJAX-yソリューションを考え出しました、それは興味があるかもしれません:-)

0


phpにはADODBを使うことをお勧めします。 クエリキャッシングやSQLインジェクション保護などを内蔵しています。 あなたはhttp://phplens.com/lens/adodb/docs-adodb.htm#cachingでキャッシュ機能についてもっと読むことができます

0


ここでの最善の解決策は、データベースにお気に入り/ブックマークテーブルを作成し、それにuser_idとitem_idを含めて、アイテム取得ロジックに結合を追加することです。

そうすれば、追加のSQLコマンドを実行したり、セッションに何かを格納したりする必要はなく、これらのお気に入りの列が存在するかどうかを確認するだけで済みます。

0


タイトルとURLをコピーしました