2012-09-13 17 views
8

मैं Nolithius पर लंबे मतदान के बारे में एक लेख पढ़ रहा था। सेक्शन PHP पूरे सत्र में सो जाता है, यह लिखा गया है कि पूरे सत्र को डेडलॉक में आने से रोकने के लिए session_write_close फ़ंक्शन को कॉल किया जाना चाहिए। डेडलॉक द्वारा वास्तव में क्या मतलब है? क्या इसका मतलब यह है कि इस फ़ंक्शन के बिना, क्लाइंट साइड में खोले गए उसी डोमेन से कोई अन्य पृष्ठ अन्य स्क्रिप्ट्स (जैसे एक) से AJAX डेटा प्राप्त नहीं कर पाएगा जब तक कि इसने निष्पादन समाप्त नहीं किया है और परिणाम वापस कर दिया है? ऐसा क्यों होना चाहिए? और session_write_close कैसे मदद कर सकते हैं? अगली बार जब वह इस अनुरोध से डेटा प्राप्त कर लेता है तो वह इस डोमेन से किसी पृष्ठ से अनुरोध करने के लिए ग्राहक पक्ष से सभी वैयक्तिकरण को हटा देगा?लंबे मतदान में session_write_close का उपयोग क्यों किया जाना चाहिए?

जब फ़ाइल आधारित सत्रों प्रत्येक अनुरोध उपयोग किया जाता है सचमुच अनुरोध के अंत तक फ़ाइल ताले:

उत्तर

15

यह मेरी समझ है।

मतलब यह है कि अगला अनुरोध (जो सत्र डेटा का भी उपयोग करता है) को लॉक को रिलीज़ होने की प्रतीक्षा करनी है।

इसका उपयोग सत्र डेटा भ्रष्टाचार से बचने के लिए किया जाता है।

session_write_close() का उपयोग करके साफ हो जाएगा (लेकिन कोई भी सत्र डेटा नहीं खोला जाएगा) और फाइल को पहले लॉक जारी करने के लिए अन्य अनुरोधों को जारी रखने की अनुमति होगी।

यह अच्छा अभ्यास है, खासकर यदि आपके पास स्क्रिप्ट्स हैं जो बहुत सोते हैं, शायद।

+1

क्या केवल वह फ़ाइल जो सो रही है, लॉक हो जाएगी, या पूरे डोमेन को बंद कर दिया जाएगा, इस प्रकार अन्य AJAX अनुरोधों को अन्य स्क्रिप्ट, पेजेलोड आदि को अनुमति नहीं दे रहा है? – SexyBeast

+0

यदि आप इस तरह से देखते हैं, हां, पूरा डोमेन लॉक हो जाएगा - यदि आपके पास सत्र की शुरुआत और उपयोग करने वाली आपकी सभी स्क्रिप्ट हैं। स्क्रिप्ट चौड़े सत्र के उपयोग के बजाय, आपको कहां और कहां चाहिए, सत्र को चुनिंदा रूप से खोलना और बंद करना सबसे अच्छा है। – zaf

+0

तो यदि मैं 'session_write_close' का उपयोग करता हूं, तो क्या वह सत्र समाप्त नहीं करेगा? यही है, जब उपयोगकर्ता उस डोमेन से दूसरे पृष्ठ का अनुरोध करता है, तो क्या वह एक नया सत्र शुरू कर देगा? – SexyBeast

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