2011-12-07 12 views
5

मेरे पास qty 1 के साथ अद्वितीय आइटम के साथ एक कार्ट एप्लिकेशन है - मुझे स्टॉक क्यूटी को कम करने की आवश्यकता होती है जब कोई उपयोगकर्ता टोकरी में किसी और को इसे खरीदने से बचने के लिए रखता है। समस्या यह है कि अगर वे बिना खरीद के गाड़ी छोड़ देते हैं तो मुझे आइटम को वापस स्टॉक में रखना होगा।PHP एक स्क्रिप्ट चलाता है जब एक सत्र

क्या कार्ट सत्र समाप्त होने पर मैं स्टॉक को फिर से भर सकता हूं? यानी स्टॉक को बदलने के लिए एक स्क्रिप्ट चलाएं।

+0

ऐसा लगता है कि ऐसा करने के लिए थोड़ा अजीब लगता है। उदाहरण के लिए, मैं अपने सभी सामान अपने कार्ट में जोड़ सकता था। यदि आपका सामान्य सत्र 20 मिनट है तो आपके पास 20 मिनट के लिए कोई स्टॉक नहीं होगा। जब कोई चेक आउट करता है तो क्यों न केवल स्टॉक को हटा दें? इसके बाद भी आप चेक कर सकते हैं जब वे यह सुनिश्चित करने के लिए चेक आउट पर क्लिक करते हैं कि यह अभी भी स्टॉक में है। –

+0

मैं उन्हें गाड़ी में डालते समय स्टॉक से नहीं हटाऊंगा, लेकिन केवल जब वे वास्तव में खरीदे जाते हैं। – Gumbo

+0

धन्यवाद, मैं सहमत हूं लेकिन यह मेरा निर्णय नहीं है! –

उत्तर

4

कस्टम सत्र-हैंडलिंग क्लास बनाने के लिए आप session_set_save_handler का उपयोग कर सकते हैं। जब आप ऐसा करते हैं, तो आप कचरा कलेक्टर कहलाते हैं या सत्र नष्ट होने पर चलाने के लिए आवश्यक अन्य कार्रवाइयां तय कर सकते हैं। यदि आप कचरा कलेक्टर के साथ काम करने का निर्णय लेते हैं, तो सुनिश्चित करें कि आप session.gc_divisor और session.gc_probability के मान भी जानते हैं और यह भी समझते हैं कि वे क्या करते हैं (ये संभावना है कि कचरा कलेक्टर चलाएगा)।

+0

यह हम आपको धन्यवाद के लिए जा रहे हैं –

+0

@ jimsmith मुझे खुशी है कि यह मदद करता है – mishu

0

सत्र गतिविधि को ट्रैक करने के लिए डेटाबेस तालिका बनाएं, sessions कहें। इसमें, कम से कम फ़ील्ड session_id और एक DATETIME या TIME फ़ील्ड को last_activity कहा जाता है।

आपने पहले से ऐसा नहीं है, तो, यह भी एक carts तालिका कि गाड़ी की सामग्री (जैसे product_id और quantity) रखती है और session_id लिए एक लिंक है बनाएँ।

  1. उपयोगकर्ता आदेश खत्म, बस "पोंछ" carts तालिका उनके सत्र से संबंधित में पंक्तियों: तो फिर, वहाँ 2 परिदृश्य हैं।
  2. उपयोगकर्ता कार्ट छोड़ देता है, एक क्रोनबॉज को कॉल करता है जो यह देखने के लिए जांच करता है कि last_activity मान अधिक है तो आप इसे कहना चाहते हैं (कहें, एक घंटा पहले)। उस स्क्रिप्ट को कार्ट में मौजूद मात्रा के साथ अपनी आपूर्ति को फिर से स्टॉक करें।

ध्यान दें कि आपको अपने बूटस्ट्रैप/लोडर में last_activity फ़ील्ड को अपडेट करने की आवश्यकता होगी (एक तंत्र जो प्रत्येक लोड किए गए पृष्ठ पर ट्रिगर होता है)।

1

क्रॉन नौकरियों की आवश्यकता से बचने के लिए; इसे सरल रखें:

  1. एक उपयोगकर्ता उठाता है "टोकरी में वस्तु रखने" डेटाबेस में संग्रहीत किया जाता है के लिए
  2. टाइमस्टैम्प उसकी/उसकी टोकरी में एक वस्तु देता है, और समय समाप्त टाइमस्टैम्प भी संग्रहित है। उदाहरण के लिए (time() + (60*20))
  3. उपयोगकर्ता वेबपेज
  4. हर pageload पर बंद कर देता है आप अगर समय समाप्ति-टाइम स्टांप वर्तमान टाइमस्टैम्प तुलना में छोटे होते जाँच करने के लिए एक सरल mysql-क्वेरी से करते हैं। यदि क्वेरी परिणाम देता है, तो टोकरी से हटाएं और स्लॉट में वापस डालें।

(यह आवश्यक है कि आप "पिछले गतिविधि" डेटाबेस भी में किसी प्रकार का अद्यतन)

सुंदर सीधे आगे होना चाहिए।

संबंधित मुद्दे