curl

2010-02-09 15 views
7

द्वारा उपयोग किए गए समवर्ती कनेक्शन को कैसे सीमित करें मैंने PHP (और curl) का उपयोग करके एक सरल वेब क्रॉलर बनाया है। यह 60,000 एचटीएमएल पेजों को पीछे छोड़ देता है और उत्पाद जानकारी को पुनः प्राप्त करता है (यह इंट्रानेट पर एक उपकरण है)।curl

मेरी मुख्य चिंता समवर्ती कनेक्शन है। मैं कनेक्शन की संख्या को सीमित करना चाहता हूं, इसलिए जो कुछ भी होता है, क्रॉलर 15 से अधिक समवर्ती कनेक्शन का उपयोग नहीं करेगा।

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

क्या यह संभव है?

या शायद मुझे पूरी चीज को दूसरी भाषा में फिर से लिखना चाहिए?

धन्यवाद, किसी भी मदद की सराहना की जाती है!

उत्तर

5

अच्छी तरह से आप कनेक्शन की संख्या को सीमित करने के लिए curl_set_opt(CURLOPT_MAXCONNECTS, 15); का उपयोग कर सकते हैं। लेकिन अगर आप इसे अपने लिए नहीं करते हैं तो आप एक साधारण कनेक्शन मैनेजर भी बनाना चाहेंगे।

+1

मुझे नहीं पता कि मुझे रिहा किया जाना चाहिए, या बेवकूफ गूंगा! मुझे इस विकल्प से अवगत नहीं था, लेकिन फिर भी मैं कसम खाता हूं कि मैं सभी कर्ल दस्तावेज़ पढ़ता हूं ... एक से अधिक बार! कभी नहीं, मैं अपना परिणाम पोस्ट करूंगा। बहुत - बहुत धन्यवाद मेरे मित्र! – josephdotca

0

हो सकता है कि एक साधारण कनेक्शन तालिका लिखें:

target_IP   | active_connections 

1.2.3.4     10 
4.5.6.7     5 

प्रत्येक कर्ल कॉल कनेक्शन की संख्या में वृद्धि होगी, प्रत्येक पास यह कमी।

आप तालिका को एक mySQL तालिका में, या Memcache गति के लिए स्टोर कर सकते हैं।

जब आप एक आईपी का सामना करते हैं जिसमें पहले से ही अधिकतम कनेक्शन हैं, तो आपको "बाद में प्रयास करें" कतार लागू करना होगा।

0

another question पर मेरा उत्तर curl_multi_ * के साथ ऐसा करने के लिए कुछ कोड है।