2010-03-11 90 views
32

我有一個服務器與兩個不同的IP。我需要從第一個IP發送奇怪的curl請求,甚至從第二個發送請求。我如何選擇傳出IP地址?選擇傳出IP捲曲請求

我的PHP腳本是這樣的:

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

我該怎麼辦呢?

回答

48

你可能要嘗試設置CURLOPT_INTERFACE選項:

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

CURLOPT_INTERFACE:使用輸出網絡接口的名稱。這可以是接口名稱,IP地址或主機名。

來源:php Manual: curl_setopt


編輯:固定例如,@Michael Hart pointed out在對方的回答指出。

24

由於我還不能回覆,只是想補充Daniel Vassallo的回答。雖然他是正確的,但他的榜樣不是。

CURLOPT_INTERFACE是一個常量,不能放在引號內。這可能會造成一些混淆,只有複製和粘貼才能發現它不起作用。正確的代碼是:

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

此外,對於Linux系統(我敢肯定,Windows,但它不會是完全一樣的),我覺得他指出,你不必使用IP地址。如果您知道ethN接口,則根據網絡的配置方式,您可以簡單地使用「eth0」,「eth1」或「eth0:0」。這可能是更優選的,因爲代碼不會特定於1臺機器,並且可能適合更廣泛的配置(例如羣集)。