php - cURL sometimes returning blank string for a valid URL -


मैं रोलिंग-कर्ल [https://github.com/LionsAd/rolling-curl] पुस्तकालय को एसिंक्रोनस से उपयोग कर रहा हूं एक निर्धारित कार्य के हिस्से के रूप में बड़ी मात्रा में वेब संसाधनों से सामग्री को पुनः प्राप्त करें लाइब्रेरी आपको अधिकतम संख्या में समवर्ती कर्ल कनेक्शन सेट करने की अनुमति देती है, और मुझे 20 में शुरू हुआ, लेकिन बाद में गति में वृद्धि करने के लिए बाद में 50 तक पहुंचा।

ऐसा लगता है कि हर बार मैं इसे चलाता हूं, मनमाने ढंग से यूआरएल कई हजारों संसाधित किया जा रहा है बस विफल और रिक्त स्ट्रिंग वापस आती है। ऐसा लगता है कि मेरे पास अधिक समवर्ती कनेक्शन हैं, और मुझे मिल रहे अधिक असफल अनुरोध हैं। एक ही url जो एक समय में विफल हो सकता है अगली बार जब मैं फ़ंक्शन को चलाने का प्रयास करता हूं। इसका कारण क्या हो सकता है, और मैं इससे कैसे बच सकता हूं?

सामान्य तौर पर आप मानते हैं कि यह नहीं होना चाहिए होता है।

बाहरी सर्वर तक पहुंचने के मामले में जो मामला नहीं है। आपका कोड सर्वर के बारे में पूरी तरह अवगत होना चाहिए, जो जवाब नहीं दे सकते, समय पर प्रतिक्रिया न दें या गलत जवाब दें यह HTTP प्रक्रिया में अनुमत है कि चीजें गलत हो सकती हैं। यदि आप सर्वर पर पहुंचते हैं तो आपको एक HTTP त्रुटि कोड द्वारा सूचित किया जाना चाहिए (हालांकि हमेशा ऐसा नहीं होता है) परन्तु नेटवर्क समस्याएं भी कोई बेकार प्रतिक्रिया नहीं बना सकती हैं।

बाहरी इनपुट पर विश्वास न करें यह इस मुद्दे की जड़ है।

आपके कंक्रीट मामले में आप अनुरोधों की मात्रा लगातार बढ़ाते हैं इससे अधिक अनुरोध, खुले कुर्सियां ​​और अन्य उपयोग होंगे। अपने सटीक मुद्दे के समाधान को खोजने के लिए आपको सर्वर पर उन्नत पहुंच की आवश्यकता है ताकि आप लॉगफ़ाइल देख सकें और खुले कनेक्शन और अन्य चिंताओं को मॉनिटर कर सकें। अधिमानतः आप किसी अन्य सॉफ़्टवेयर कनेक्शन के बिना किसी टेस्ट सर्वर पर इसका परीक्षण करते हैं ताकि आप इस समस्या को अलग कर सकें।

लेकिन आप इसे कितनी अच्छी तरह से जांचते हैं, आपको सिर्फ अनिश्चितताएं हैं उदाहरण के लिए आप बाहरी सर्वर द्वारा अवरुद्ध हो सकते हैं क्योंकि आप बहुत अधिक अनुरोध करते हैं आप कुछ सुरक्षा फिल्टर जैसे डीडीओएस फिल्टर आदि में फंसे हो सकते हैं। अनुरोधों की राशि (स्वचालित या हाथ से) की निगरानी और अनुकूलन आपके लिए सबसे अधिक स्थिर समाधान उत्पन्न करेगा आप इन खोए हुए अनुरोधों को स्वीकार भी कर सकते हैं और सिर्फ एक स्थिर कतार को संभाल सकते हैं, जो सुनिश्चित करता है कि आप समय में एक निश्चित समय में सामग्री प्राप्त करें।

Comments

Popular posts from this blog

qt - switch/case statement in C++ with a QString type -

python - sqlite3.OperationalError: near "REFERENCES": syntax error - foreign key creating -

Python's equivalent for Ruby's define_method? -