Появился вопрос несколько абстрактного плана. Есть сервер, на нем есть некоторый скрипт, который через fsockopen() коннектится на 80 порт определенного хоста. Локально все прекрасно работает на этот адрес и на другие, удаленно работает ТОЛЬКО на другие. Почему может не работать? Возникает ошибка тайм-аута. Вот мне в голову приходит только один вариант: удаленный сервер закрыл доступ к себе с некоторых адресов, включая тот, на котором крутится скрипт ( инфобокс ).
Вот точно такой же миной, только меньше, но другой, дельфины, воевавшие на нашей стороне, взорвали немецкий крейсер Гюнтер Мессер © воровать плохо
[vs] да, очепятка. поправил. Luge Да при чем тут воровать? Меня попросили "скорректировать скрипт", чтобы он работал. А он вот такое выдает! Ладно б всегда ругался, так ведь только при подключении к требуемому серверу!
а время сейчас такое. Нет к людям веры. А почему бы не написать админу того сайта, к которому коннекта нет? С ним на пару и решилось бы.
Luge PHP: $host = 'vkontakte.ru'; ... $send = 'GET /audiosearch.php?'.$q." HTTP/1.1\r\n"; ... $socket = fsockopen( $host, 80, $errno, $errstr, 5 ); ;-) P.S. Поисковик музыки. Подробностей не знаю - имею только скрипт. P.P.S. Локально и скрипт работает и telnet на 80ый порт подключается. Что-то похоже именно с сервером, на котором крутится скрипт.
Возможно, опечатка в запрсе. После формирования всей строки HTTP-запрса, выведи её на экран - в коде можно чего-нибудь не заметить.
Не вдаваясь в подробности ( код не мой! я только вынес имя в $host, чтобы дважды не повторяться ): PHP: $host = 'vkontakte.ru'; if(empty($page) || $page <= 1) $page = 0; else $page = ($page.'00' - 100); $q = 'q='.urlencode($q).'&add=1&st='.$page; $send = 'GET /audiosearch.php?'.$q." HTTP/1.1\r\n"; $send .= "Host:".$host."\r\n"; $send .= "User-Agent: Mozilla/5.0\r\n"; $send .= "Pragma: no-cache\r\n"; $send .= 'Cookie: '.account()." \r\n"; $send .= "Connection: Close\r\n\r\n"; $socket = fsockopen( $host , 80, $errno, $errstr, 5 ); account() - формирует строку вида "remixlang=0; remixchk=5; remixmid=XXXXXX; remixemail=XXXXXX; remixpass=XXXX"