У меня есть сервер с двумя разными 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 машины и может входить в более широкую конфигурацию (например, кластеры).