выберите исходящий ip для запроса curl

У меня есть сервер с двумя разными IP-адресами. Мне нужно отправить нечетные запросы на завивки с первого IP-адреса и даже со второго. Как выбрать исходящий IP-адрес?

Мой скрипт PHP выглядит примерно так:

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

Как я могу это сделать?

Вы можете попробовать установить параметр CURLOPT_INTERFACE :

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

CURLOPT_INTERFACE: имя используемого сетевого интерфейса. Это может быть имя интерфейса, IP-адрес или имя хоста.

От: php Руководство: curl_setopt


EDIT: Пример фиксации, как отметил Майкл Харт в другом ответе.

Поскольку я не могу ответить, просто хотел добавить ответ Даниэля Вассалло. Хотя он прав, его примером нет.

CURLOPT_INTERFACE является константой и не может быть помещен в кавычки. Это может вызвать некоторую путаницу для тех, кто может копировать и вставлять только, чтобы узнать, что он не работает. Правильный код:

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

Кроме того, для Linux-систем (и я уверен, что Windows, но он не будет точно таким же), я чувствую, что вам не нужно использовать IP-адрес. Если вы знаете интерфейс ethN, вы можете просто использовать «eth0», «eth1» или «eth0: 0» в зависимости от настройки вашей сети. Это может быть более предпочтительным, поскольку код не будет специфичным для 1 машины и может входить в более широкую конфигурацию (например, кластеры).