2010-03-11 16 views
32

के लिए आउटगोइंग आईपी का चयन करें मेरे पास दो अलग-अलग आईपी वाले सर्वर हैं। मुझे पहले आईपी से और दूसरे से भी अजीब कर्ल अनुरोध भेजने की जरूरत है। मैं आउटगोइंग आईपी पता कैसे चुन सकता हूं?कर्ल अनुरोध

$curlh = curl_init($url); 
curl_setopt($curlh, CURLOPT_USERAGENT, $uagent); 
curl_setopt($curlh, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($curlh); 

मैं ऐसा कर सकते हैं कैसे:

मेरे PHP स्क्रिप्ट कुछ इस तरह है?

उत्तर

48

आप CURLOPT_INTERFACE विकल्प सेट करने की कोशिश करना चाहते हो सकता है:

curl_setopt($curlh, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx"); 

CURLOPT_INTERFACE: बाहर जाने वाले नेटवर्क इंटरफेस के नाम का उपयोग करने के लिए। यह एक इंटरफेस नाम, एक आईपी पता या एक मेजबान नाम हो सकता है।

से: php Manual: curl_setopt


संपादित करें: फिक्सिंग उदाहरण, @Michael Hart pointed out के रूप में अन्य जवाब में बताया।

24

चूंकि मैं अभी तक जवाब नहीं दे सकता, सिर्फ डैनियल वासलो के जवाब में जोड़ना चाहता था। जबकि वह सही है, उसका उदाहरण नहीं है।

CURLOPT_INTERFACE स्थिर है, और उद्धरणों के भीतर नहीं रखा जा सकता है। इससे कुछ लोगों को भ्रम पैदा हो सकता है जो केवल यह पता लगाने के लिए कॉपी और पेस्ट कर सकते हैं कि यह काम नहीं करता है। उचित कोड होगा:

curl_setopt($curlh, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx"); 
इसके अलावा

, लिनक्स सिस्टम के लिए (और मुझे यकीन है कि विंडोज हूँ, लेकिन यह अभ्यस्त ठीक वही होना), मैं तुम्हें आईपी का उपयोग करने की जरूरत नहीं है कि उनका कहना है की तरह महसूस पता। यदि आप एथएन इंटरफ़ेस को जानते हैं, तो आप अपने नेटवर्क को कॉन्फ़िगर करने के तरीके के आधार पर "eth0", "eth1", या "eth0: 0" का उपयोग कर सकते हैं। यह अधिक बेहतर हो सकता है, क्योंकि कोड 1 मशीन के लिए विशिष्ट नहीं होगा, और अधिक व्यापक विन्यास (उदाहरण के लिए, क्लस्टर्स) में फिट हो सकता है।

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