मैं इसे पुन: उत्पन्न करने और समस्या को समझने में सक्षम था। सबसे पहले यह आपके द्वारा वर्णित तरीके से देखा गया: मैंने ब्राउज़र में स्क्रिप्ट का अनुरोध किया और जब यह चल रहा था, मैंने फ़ाइल सामग्री की जांच की - यह busy!
था। फिर मैं दूसरी स्क्रिप्ट चलाता हूं और ब्राउज़र में यह लोडिंग था, जैसा कि पहले वाला था। मैंने सोचा कि यह भी चल रहा है, लेकिन यह नहीं था।
अगर busy!
के बजाय आप कुछ यादृच्छिक, की तरह जोड़ने यह आंकड़ा बहुत आसान है: एक ही दो स्क्रिप्ट चलाने के लिए उसी तरह
file_put_contents('test.txt', 'busy washing ' . (mt_rand(1, 999) * 99999) . ' dishes');
और फ़ाइल की सामग्री की निगरानी। सबसे पहले, यह पहली लिपि लिखी जाएगी। busy washing 1 dishes
कहें। फिर आप दूसरी स्क्रिप्ट लिखने के लिए सामग्री में परिवर्तन देखेंगे, संख्या अलग होगी।
असल में, दूसरी स्क्रिप्ट प्रतीक्षा करता है जबकि पहला एक समाप्त होता है और केवल तब शुरू होता है। परिष्कृत करने के लिए पर्याप्त मजेदार, पहली स्क्रिप्ट फ़ाइल को साफ़ करती है, जो दूसरी स्क्रिप्ट को सामान्य रूप से चलाने देती है, लेकिन यह ब्राउज़र में दिखती है जैसे कि वे दोनों एक ही समय में काम कर रहे हैं। असल में, दूसरी स्क्रिप्ट पहले के रूप में दो गुना अधिक समय तक चलती है।
मुझे AJAX के माध्यम से भारी एसिंक्रोनस अनुरोध करते समय उस व्यवहार का सामना करना पड़ा और एक अन्य ब्राउज़र टैब में एक ही वेबसाइट पेज का अनुरोध करना पड़ा। जब तक स्क्रिप्ट खत्म नहीं हो जाती तब तक मैं टैब लोड नहीं कर सका।
इतनी लंबी कहानी छोटी है, कोई समस्या नहीं है! यदि आप क्रॉन के माध्यम से उस स्क्रिप्ट को कतारबद्ध करते हैं तो उन्हें अलग से चलाया जाएगा और दूसरा यह पता लगाकर खत्म होगा कि फ़ाइल खाली नहीं है।
देखें [झुंड] (http://php.net/manual/en/function.flock.php)। –
कोई कैशिंग नहीं होना चाहिए। मैं सिर्फ उत्सुक हूं, क्या होता है जब आप फ़ाइल में मैन्युअल रूप से कुछ लिखते हैं और अपनी स्क्रिप्ट चलाते हैं? – Ranty
@ लेवी मॉरिसन अच्छा दिखता है, लेकिन 'file_get_contents() 'के बारे में क्या? – Peter