私は数量1のユニークなアイテムを持つカートアプリケーションを持っています1 - ユーザが他の誰かを買わないようにするために、在庫量を枯渇させる必要があります。問題は、買い物をしなくてカートを放棄すれば、商品を在庫に戻す必要があるということです。セッションが期限切れになったときにPHPを実行する
カートセッションが切れたときに在庫を補充する方法はありますか?すなわち、株式を置き換えるスクリプトを実行する。
私は数量1のユニークなアイテムを持つカートアプリケーションを持っています1 - ユーザが他の誰かを買わないようにするために、在庫量を枯渇させる必要があります。問題は、買い物をしなくてカートを放棄すれば、商品を在庫に戻す必要があるということです。セッションが期限切れになったときにPHPを実行する
カートセッションが切れたときに在庫を補充する方法はありますか?すなわち、株式を置き換えるスクリプトを実行する。
session_set_save_handler
を使用すると、カスタムセッション処理クラスを作成できます。 これを実行すると、ガベージコレクタが呼び出されたとき、またはセッションが破棄されたときに実行する必要のある他のアクションを決定できます。ガベージコレクタを使用する場合は、session.gc_divisor
とsession.gc_probability
の値も把握していることと、ガベージコレクタが実行される確率を設定することも理解してください。
これは私たちがあなたに感謝のためにあります。 –
@jimsmith私はそれが助けてうれしいです – mishu
セッションアクティビティ(例:sessions
)を追跡するデータベーステーブルを作成します。その中に少なくともsession_id
というフィールドと、last_activity
というDATETIMEフィールドまたはTIMEフィールドを入れてください。
あなたがそうまだ持っていない場合、また(product_id
とquantity
など)カートの内容を保持し、session_id
へのリンクを持っているcarts
テーブルを作成します。
carts
テーブルの行:次に、2つのシナリオがあります。last_activity
の値がそれ以上(たとえば、1時間以上前)になっているかどうかを確認するcronジョブを呼び出します。そのスクリプトがカートに入っていた数量であなたの供給を再在庫するようにします。ブートストラップ/ローダー(読み込まれたすべてのページでトリガーされるメカニズム)のlast_activity
フィールドを更新する必要があることに注意してください。
cronジョブが不要になるようにするには、それをシンプルに保つ:「かごの中のオブジェクトを配置する」ための
(time() + (60*20))
かなりまっすぐ進むであるべき
(これは、あなたも、データベース内の「最後のアクティビティ」のいくつかの並べ替えを更新することが必要です)。
それはそうするのがちょっと奇妙なようです。たとえば、すべての商品をカートに追加することができます。あなたの通常のセッションが20分の場合は、20分間在庫がありません。誰かがチェックアウトしたときに在庫を取り除くだけの理由はありませんか?チェックアウトをクリックして在庫がまだ残っていることを確認することもできます。 –
カートに入れるときには、実際に買ったときだけ在庫から取り除きません。 – Gumbo
ありがとう、私は同意するが、それは私の決断ではない! –