Проблема с fsockopen()

v7

Guest
Проблема с fsockopen()

Пишу скрипт для проверки прокси. Возникла проблема - не могу решить второй день: при проверке некоторых прокси вылетает Апач (установлен Денвер), либо появляется сообщение "ошибка в строке $port1=... - слишком длинный аргумент". Оказалось, что вместо IP:порт из $proxylist в какой-то момент он начинает брать странные значения (пример ниже). Похоже, возникает какая-то критическая ошибка.
Смотрел через файрвол, прокси не отвечают очень долго и происходит 2-4 одновременных соединения. Возможно, баги из-за этого.
Вот этот скрипт (сильно упрощенный, но не желающий работать), с этими IP возникают проблемы:
PHP:
$proxylist=array("12.3.144.2:8080",
"12.10.130.114:80","12.25.203.42:80", "12.25.203.78:80","12.33.10.162:80", "12.36.103.1:80");
$s1="";
for ($i=0;$i<count($proxylist);$i++) {
      $a1=strpos($proxylist[$i],":");
      $ip1=substr($proxylist[$i],0,$a1);
      $port1=substr($proxylist[$i],($a1+1));
      $fp=fsockopen($ip1,$port1,$errstr,$errno,10);
      if(!$fp) {
         $s1.="error ".$ip1.":".$port1."<br>";
      }
      else {
         fclose($fp);
         $s1.=$ip1.":".$port1."<br>";
      }
}
echo $s1;
Пример ошибок (адреса записывались в файл):
12.3.144.2:8080
12.10.130.114:80
12.25.203.42:80
:2.36.103.1:80
: 0:
  {
  {

Подскажите, как победить.
 

v7

Guest
Originally posted by tony2001
код работает нормально, отлаживай запись в файл.
Да нет, с записью в файл я два дня не промучился бы. :)
Запустил сейчас, вот что выдало на экран (14 строка - это $fp=fsockopen...)
Warning: fsockopen() [function.fsockopen]: php_hostconnect: connect failed in z:\home\proxy.com\www\index2.php on line 14
Warning: fsockopen() [function.fsockopen]: unable to connect to 12.3.144.2:8080 in z:\home\proxy.com\www\index2.php on line 14
Warning: fsockopen() [function.fsockopen]: php_hostconnect: connect failed in z:\home\proxy.com\www\index2.php on line 14
Warning: fsockopen() [function.fsockopen]: unable to connect to 12.10.130.114:80 in z:\home\proxy.com\www\index2.php on line 14
Warning: fsockopen() expects parameter 2 to be long, string given in z:\home\proxy.com\www\index2.php on line 14
error 12.3.144.2:8080
error 12.10.130.114:80
12.25.203.42:80
:80
error 12.33.10.162:
error :

Первые четыре предупреждения - это понятно, убираются значком '@' перед fsockopen(), а вот "expects parameter 2 to be long" - это уже непонятно.
Неужели только у меня не работает?
Потестируйте, пожалуйста, кто-нибудь еще.
 

SiMM

Новичок
v7, нормально всё - ищи грабли в другом месте - наверно список проксей из файла неправильно читаешь - иначе строчек типа ":80", "error 12.33.10.162:" и "error :" у тебя бы не возникало. Как вариант - поставь нормальный Apache.
 

v7

Guest
Похоже, проблемы были именно с Апачем. Потестировал на своем хостинге - ошибок нет.
Всем спасибо за помощь.
 
Сверху