Скрипт и несколько IP

Seo Lenka
На сайте с 04.02.2008
Offline
8
1327

Всем привет.

Есть вот такая задача:

сервак Debian, несколько IP, ISPManager Lite.

Требуется сделать так, чтобы скрипт PHP (обращается к яше) подключался с разных IP.

Подскажите, уважаемые гуру, как это сделать?

P
На сайте с 19.01.2006
Offline
96
#1

наверное на каждуй айпи по скрипту кинуть и синхронизовать скрипты их между собой, чтобы в данный момент работал только один их них.

Размещу недорого ваши статьи туристической тематики.
Seo Lenka
На сайте с 04.02.2008
Offline
8
#2
pheny:
наверное на каждуй айпи по скрипту кинуть и синхронизовать скрипты их между собой, чтобы в данный момент работал только один их них.

Спасибо, сама обдумываю такой вариант. Может кто-нибудь предложит другой путь решения?

edogs software
На сайте с 15.12.2005
Offline
775
#3

Если мы правильно поняли вопрос, то Вам поможет http://ru2.php.net/socket_bind

Возможно придется переписать скрипт на сокеты, но зато свободно скриптом сможете выбирать IP для обращений к яндексу.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
V
На сайте с 25.07.2006
Offline
128
#4
edogs:
Если мы правильно поняли вопрос, то Вам поможет http://ru2.php.net/socket_bind
Возможно придется переписать скрипт на сокеты, но зато свободно скриптом сможете выбирать IP для обращений к яндексу.

Дабы не возиться с сокетами аналогичная вещь есть в Curl, параметр CURLOPT_INTERFACE

Приватный linux-администратор
Seo Lenka
На сайте с 04.02.2008
Offline
8
#5

Всем спасибо, вот нашла варианты:


Поиск с помощью Яндекс.XML

Если вы решили воспользоваться сервисом Яндекс.XML, то прежде всего вам потребуется выделенный IP-адрес.

Далее для организации запроса именно с выделенного IP-адреса существует несколько вариантов:

1.Использовать функцию socket_bind:
<?php
// Создаем новый сокет:
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// Ваш выделенный IP-адрес:
$sourceip = 'xxx.xxx.xxx.xxx';
// Используем этот IP-адрес:
socket_bind($sock, $sourceip);
// Соединяемся с удаленным сервером:
socket_connect($sock, 'xmlsearch.yandex.ru', 80);
// Делаем запрос:
$request = 'GET /xmlsearch?query=' . $search . ' HTTP/1.0' .
"\r\n" .'Host: xmlsearch.yandex.ru ' . "\r\n\r\n";
socket_write($sock, $request);
// Получаем и выводим ответ:
while(!socket_last_error($sock)){
if($buffer=socket_read($sock,512,PHP_NORMAL_READ)){
echo $buffer;
} }
// Закрываем сокет:
socket_close($sock);
?>

Здесь переменная $search обозначает только сам поисковый запрос, как это описано на сайте Яндекса, то, что написано после выражения "query=". При использовании PHP-интерпретатора как модуля Apache (по умолчанию на виртуальном хостинге именно так) работа с сокетами запрещена, поэтому следует использовать свой PHP-интерпретатор, собрать который можно по инструкции при конфигурировании обязательно указав ключ –enable-sockets.

2. C помощью curl_setopt: <?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx");
curl_setopt($ch, CURLOPT_URL, $search);
$xml_data=curl_exec($ch);
curl_close($ch);
?>

Переменная $search – HTTP-запрос целиком (то есть URL).

В этом случае также потребуется собрать свой интерпретатор PHP, указав при конфигурировании ключ –with-curl=/usr/local.
Eddie
На сайте с 12.07.2006
Offline
36
#6

Если Ваш скрипт использует CURL, то можно сделать так:

curl_setopt($ch, CURLOPT_INTERFACE, $extip);

Если работаете с сокетами, то так:

socket_bind($sock, $extip);

socket_connect($sock, '127.0.0.1', 80);
Блог веселого программиста (http://www.bloged.org)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий