2012-12-24 12 views
6

अपाचे पर PHP में एक अनंत लूप चल वहीं अन्य पृष्ठों/लिपियों लटका दिया (हमेशा के लिए ले लोड करने के लिए) जब तक मैं स्क्रिप्ट के निष्पादन को तोड़ने। हालांकि, अन्य पेज अभी भी एक अलग उपयोगकर्ता सत्र या ब्राउज़र पर निष्पादित होंगे। क्या इसे हल किया जा सकता है?PHP अनंत लूप अन्य स्क्रिप्ट तक पहुंच को रोकता है?

+0

आपकी मशीन में कितने सीपीयू हैं? अपाचे में कितने धागे चल रहे हैं? मैं सोचा होगा कि कई लिपियों एक ही समय में चलाने के लिए, सामान्य रूप में सक्षम नहीं होगा। हो सकता है कि आप की जरूरत: http://httpd.apache.org/docs/2.2/mod/worker.html (मैं यह सोचते हैं रहा हूँ अपने "अनंत" है सिर्फ एक "जबकि (1)," या कुछ इस तरह है, और कुछ और जटिल नहीं है जो आपके main.php के साथ लॉकिंग टकराव का कारण बन सकता है) –

+0

क्या आपकी अनंत स्क्रिप्ट सत्र की आवश्यकता है? यदि नहीं, तो आप इसे कमांड लाइन से चला सकते हैं। हालांकि प्रोग्राम प्रोग्राम चलाने के लिए php सही उपकरण नहीं हो सकता है ... – jeroen

+1

आप अपनी अनंत चल रही स्क्रिप्ट के लिए समर्पित/विशेष सत्र आईडी का उपयोग करने का प्रयास कर सकते हैं। बस सुनिश्चित करें कि यह अपने सामान्य सत्र आईडी के – jeroen

उत्तर

4

यह दौड़ की स्थिति समस्या है।

एक बार जब आप session_start() एक सत्र में, सत्र आईडी से जुड़ी एक फ़ाइल प्रतिबंधित अनुमतियों (पढ़ने और लिखने के लिए बंद) के साथ खोला जाता है। यदि कोई अन्य session_start() कहा जाता है, तो सत्र की असीमित रूप से संशोधित करने के लिए दूसरी स्क्रिप्ट से बचने के लिए, सत्र फ़ाइल को अनलॉक करने की प्रतीक्षा की जाएगी।

this article पर एक नज़र डालें जो मेरे साथ बेहतर समझाता है।

+4

एक "रेस स्थिति" की परिभाषा नहीं है यही कारण है, यह एक सरल बंद कर दिया संसाधन है के साथ संघर्ष नहीं कर सकते हैं। हालांकि सही जवाब। – deceze

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