2012-11-30 12 views
8

मैं जैसे PHP में एक लंबे स्क्रिप्ट बनाया:दीर्घ परिचालन पृष्ठभूमि PHP स्क्रिप्ट ब्लॉक अन्य PHP पृष्ठों जब तक यह समाप्त हो गया है

ignore_user_abort(true); 
set_time_limit(0); 

यह पृष्ठभूमि में पूरी तरह से चलाता है, भले ही मैं पेज को बंद करें। मेरी समस्या यह है कि जब तक यह स्क्रिप्ट पृष्ठभूमि में चलती है तब तक मैं अन्य PHP फ़ाइलों को नहीं खोल सकता। इस समस्या का समाधान किस प्रकार से किया जा सकता है?

+1

करता है यह स्क्रिप्ट प्लस टी वह पृष्ठ जो लॉक उपयोग सत्र प्राप्त करते हैं? –

+0

लंबी स्क्रिप्ट चलने तक, या जब तक यह समाप्त नहीं हो जाता है? – cegfault

+0

@ सलमान ए हाँ मेरी फाइलें सत्र का उपयोग कर रही हैं, क्या वह समस्या है? – martincpt

उत्तर

17

जब कोई PHP स्क्रिप्ट सत्र का उपयोग करता है, तो PHP स्क्रिप्ट पूर्ण होने तक सत्र फ़ाइल को लॉक करता है। एक पृष्ठ अनुरोध जो लॉक किए गए सत्र का उपयोग करने का प्रयास करता है, तब तक सत्र फ़ाइल जारी होने तक अवरुद्ध हो जाती है। PHP ऐसा करता है ताकि सत्र एक सतत स्थिति में बने रहें। Quote from PHP bug #31464:

[2005/01/10 08:13 यूटीसी] php में Derick डॉट नेट

यह वास्तव में एक बग बिल्कुल नहीं है, सत्र विस्तार सत्र फ़ाइल ताकि समवर्ती लॉक करने के लिए की जरूरत है अद्यतन फ़ाइल को दूषित नहीं कर सकते हैं। इसका मतलब है कि एक ही सत्र फ़ाइल का उपयोग कर सभी स्क्रिप्ट क्रमबद्ध करने की आवश्यकता है। प्रदर्शन को बेहतर बनाने के लिए आप http://php.net/session_write_close जैसे ही आप सत्र चर को पढ़ने/सेट करने के लिए उपयोग कर सकते हैं, जो फ़ाइल के लॉक को हटा देगा।

सरलतम तरीके को ऊपर वर्णित और here as well प्रकार है:

  • कॉल session_start()
  • पढ़ने/किसी भी सत्र चर लिखना
  • कॉल session_write_close()
  • कर लंबा प्रसंस्करण
4

टिप्पणियों में उल्लिखित अनुसार, सत्र समस्या है - ऐसा इसलिए है क्योंकि सत्र फ़ाइल लॉक है।

सत्र फ़ाइल अनलॉक करने के लिए अपनी लंबी चल रही स्क्रिप्ट में session_write_close() का उपयोग करें, लेकिन ध्यान दें कि आप बाद में उस विशेष स्क्रिप्ट में $_SESSION चर का उपयोग नहीं कर सकते हैं।

+0

आपके उत्तर कोलिंक के लिए धन्यवाद, मैंने सलमान के जवाब को स्वीकार करने की पेशकश की अगर वह एक लिखना चाहता है क्योंकि वह पहला था। अन्य मामले मैं आपका जवाब स्वीकार करूंगा। – martincpt

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