मुझे आपके जैसे लक्षणों के साथ एक समस्या का सामना करना पड़ा है, सिवाय इसके कि सत्र फ़ाइल हटा दी गई थी या नहीं अप्रासंगिक थी (और आपके लिए भी हो सकता है-क्या आपके पास सबूत हैं कि सत्र फ़ाइल को हटाने से flock
से संबंधित है ?)। जब लोड
/page1.php
ठीक कार्यान्वित: मेरे मामले में, यह दो लिपियों के बीच एक ही सत्र फाइल करने के लिए पहुँच के लिए एक रेस स्थिति थी। इसमें जावास्क्रिप्ट शामिल है जो XMLHttpRequest को /background.php
पर करता है।
- जब
/background.php
एक्सेस किया गया है तो यह readfile(http://remote.url)
चलाता है, जो एक अस्तित्वहीन यूआरएल है।
/page2.php
पर नेविगेट करते समय स्क्रिप्ट रुक गई है। एक स्ट्रेस flock(89, LOCK_EX
दिखाता है, और lsof इंगित करता है कि यह सत्र फ़ाइल पर पढ़ने/लिखने के उपयोग की प्रतीक्षा कर रहा है।
इस परिदृश्य में, दोनों /page2.php
और /background.php
दोनों एक ही सत्र फ़ाइल पर इंतजार कर रहे हैं, लेकिन बाद तो, क्योंकि यह समय समाप्ति के readfile()
के लिए इंतज़ार कर ऊपर आयोजित किया गया था करने में असमर्थ था। मैं एक php_error_log
में यह मिल गया:
PHP Warning: readfile(http://remote.url): failed to open stream: Connection timed out in […]/background.php on line […]
तो समस्या कथित अपराधी से एक बिल्कुल अलग स्क्रिप्ट के साथ किया गया था।
आप grepping सभी php सत्र फ़ाइल को देखने के लिए खोली गई फ़ाइलों से जल्दी से इस समस्या के लिए जाँच कर सकते हैं जो httpd प्रक्रिया यह उपयोग कर रहा है:
$ sudo lsof | grep sess_it9q6kkvf83gcj72vu05p9fcad7
httpd 31325 apache 74u REG 8,5 410 11634061 /var/lib/php/session/sess_it9q6kkvf83gcj72vu05pfa543
httpd 31632 apache 74uW REG 8,5 410 11634061 /var/lib/php/session/sess_it9q6kkvf83gcj72vu05pfa543
तो दो httpd प्रक्रियाओं एक ही सत्र फ़ाइल तक पहुँच रहे हैं, शायद इस तुम्हारी समस्या है अब आप जाँच कर सकते हैं क्या उन प्रक्रियाओं strace के साथ कर रहे हैं, या मेरे मामले में यह उपयोग करने के लिए पर्याप्त था apachectl fullstatus
:
$ sudo apachectl fullstatus | grep 31632
5-7 31632 0/1/1169 _ 0.05 6 30692 0.0 0.02 3.45 111.222.333.444 www.example.com.com /background.php
स्रोत
2014-04-17 23:32:01
क) यह सवाल शायद बेहतर http://webmasters.stackexchange.com/ की ओर निर्देशित है ख) सत्र फ़ाइल को किसने हटा दिया? आप या PHP? कितनी देर पहले इसे हटा दिया गया था? क्या आप वाकई हटा दिए गए हैं, और सिर्फ एक और प्रक्रिया से बंद नहीं है? – DaveRandom
क्या आप php के सत्र प्रबंधन या कस्टम सत्र हैंडलर का उपयोग कर रहे हैं? – dqhendricks
कुछ भी त्रुटि लॉग के माध्यम से आता है जो यह हो रहा है कि यह क्यों हो रहा है? –