2009-07-17 9 views
1

私は岐路に立っていますが、使い方がよく分かりません。今はセッション配列を使って計算を保存していますが、オブジェクトに切り替える必要があるのでいくつかの機能が必要です。しかし、私はまた、AJAXの使用を検討していて、そのデータをデータベースに送り込んでいましたが、重いトラフィックの下で多くの計算が行われるかもしれないと心配しています。オブジェクトやアクセスデータベースでphpセッションを使用する方が良いですか?

私がしようとしているのは、数量欄に変更が加えられた場合、カート内のすべての商品が再計算される必要があります。オブジェクトとセッションを使用するか、または複数のユーザーがデータを操作してdb内の大きなテーブルを更新することができます。それは、意思決定に役立ちます場合、私は、MySQL DBを使用してい

..

答えて

0

は、私は、セッションIDと対応するアイテムのIDを格納し、カートのテーブルを作成します。

セッションIDは、閲覧ユーザーを関連付けるために使用されます。価格を計算することは、ユーザーセッションIDを持つすべての行を検索し、アイテムテーブルから価格を合計するなど(たとえば)簡単です。カートへの変更には、各アイテムの挿入または削除が必要です。

+0

が必要な場合は

  • あなたは あなたのセッションストアにいくつかのSQL魔術を行うことができますが、セッションテーブルによって何を意味するのですか?あなたは私に小さな事例を教えてもらえますか?私は配列atmを使用しています。 – payling

  • 1

    セッションははるかに高速である必要がありますが、ユーザーがブラウザを閉じると持続しません。私はそのようなもの(ショッピングカート、最後にアクセスした検索など)のセッションをほとんどの時間使用します。中規模のユーザーが多いサイトでは、古いセッション情報を消去するために、テーブルのメンテナンスを行う必要があります。私が実際にデータを必要としない限り、それはあまりにも頭痛の種です。

    +0

    セッションが数多くあると帯域幅の問題が発生すると私は考えましたが、これは真実ではありませんか? – payling

    +1

    セッションの内容はダウンロード/アップロードされません。セッションIDのみがダウンロードされます。セッションの内容はサーバー上に残り、サーバー側のコードでのみアクセスできます。セッションは、DB接続/アクセスよりはるかに低いインパクトです。 –

    +0

    カートなどのセッションでデータを保持するために使用するものは何ですか?クラスが最善の解決策になると思いますか、それともdbのようなテーブルがありますか? – payling

    0

    さまざまな計算を行うために、私はセッションに参加します...これは実際に最も帯域幅に優しい方法です。クッキーを使用せずにカートを維持したい場合は、カートを残してリロードしたときにカートをデータベースに保存することができます(明らかにユーザーIDに基づいてカートを保管します)。

    1

    セッション自体をデータベースに保存することができます。だから、あなたが選んだものとは無関係に、あなた自身のデータベースベースのセッションを動かすべきではありません。

    標準のPHPセッションではセッションデータがディスクに保存されますが、注意してください。あなたのサイトに多数のセッションを持つ多くのユーザーがいるなら、あなたはあまりにも多くのディスクI/Oでボックスを駄目にする可能性があります。 SSDドライブを持っていれば、これは問題ではありません。

    これまで私が使っていたもう1つのオプションは、サーバーと同じボックスにMySQLデータベースを置いて、メモリのみのテーブルにデータを格納することです。私は、これは両方の長所だと思う:

    • それは がこれまでにディスクにダンプされませんので、それは伝統的なMyISAMの やInnoDBデータベースよりも高速です(これは主に が唯一のセッションの書き込みに影響します)

    • データベースがWebサーバーと異なるボックス にあると仮定すると、 セッションデータベース が同じボックスにあるため、より高速です。あなたは(ファイルでこれをしない できる)

    関連する問題