Автор Тема: и почему мы тупим на 67 соединении  (Прочитано 4365 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн obytatel

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 129
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.microsoft.com/
и почему мы тупим на 67 соединении
« : 27 Апреля 2003, 04:12:23 »
паскудный скрипт перестает делать работенку - всего-то 100 соединений открыть и прчитать. А он гад перестает подавать признаки жизни не выполнив порученое ему задание

set_time_limit(60000);
echo ("

start time limit

");
//error_reporting(0);
$region=file("swap/submit.x");
foreach ($region as $tmp)
{
echo("

starting $tmp
");
$host=str_replace(\'http://\', "","$tmp");
$host=str_replace(\'https://\', "","$host");
$finish= strpos($host, \'/\');
$length= $finish - 0;  
$host=Substr($host, 0, $length);
$so = fsockopen("$host", 80, &$errno, &$errstr, 30);
if (!$so) {
echo ("

connection fail


");
}
else {
echo ("connect done
");
$tmp = str_replace("\\n", "", "$tmp");
$tmp = str_replace("\\r", "", "$tmp");
fputs($so,"GET $tmp HTTP/1.0\\nHOST: http://$host/\\n\\n");
while(fgets($so,2048)!="\\r\\n" && !feof($so));
   unset($buf);
   while(!feof($so)) $buf.=fread($so,2048);
   fclose($so);
   $fp1=fopen("swap/source/$host.html" ,"w+");
   fputs($fp1, $buf);
   fclose ($fp1);
   echo ("download done
");
   fclose ($so);
   }
   
      }
      echo "

DONE

";
?>

код кривой - как сам автор:D
БЕЛАРУСЬ - страна восходящего картофеля

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
и почему мы тупим на 67 соединении
« Ответ #1 : 27 Апреля 2003, 12:26:59 »
останавливается на каком-то определенном хосте или после опред. количество обработанных хостов?
В каком режиме работаешь ? (cgi, cli, mod_php)
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
и почему мы тупим на 67 соединении
« Ответ #2 : 27 Апреля 2003, 13:01:55 »
Думаю, для начала, если в php.ini implicit_flush = Off, то в начале поставь ob_implicit_flush(); или flush(); после каждого echo.
Там где

fputs
($so,"GET $tmp HTTP/1.0\\nHOST: http://$host/\\n\\n");

не нужно http:// и слеша в конце:

fputs
($so,"GET $tmp HTTP/1.0\\nHOST: $host\\n\\n");

Потом, здесь

$fp1
=fopen("swap/source/$host.html" ,"w+");

лучше $host взять в фигурные скобки - на всякий случай... или вообще вынести из скавычек: "swap/source/{$host}.html" или "swap/source/".$host.".html"

Может у меня с логикой что-то не в порядке, но какое назначение имеет вот эта структура?

while(fgets($so,2048)!="\\r\\n" && !feof($so));

"Перематывает" хендл на конец файла?

Ты вообще задачу объясни. Если тебе просто сорцы страничек скачать надо, то их можно просто fopen($url, "r") открывать и с сокетами не париться...

[off]Мне больше всего понравилась строка $length= $finish - 0 ;)[/off]
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
и почему мы тупим на 67 соединении
« Ответ #3 : 27 Апреля 2003, 14:13:32 »
fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]])
Note:
The timeout parameter was introduced in PHP 3.0.9 and UDP support was added in PHP 4.

И по моему опыту не робит на винде.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
и почему мы тупим на 67 соединении
« Ответ #4 : 27 Апреля 2003, 14:24:56 »
У меня робит.
WinXP SP1, Apache/1.3.24 и PHP 4.3.0 как Server API.
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
и почему мы тупим на 67 соединении
« Ответ #5 : 27 Апреля 2003, 14:45:54 »
Я не ме пробовал - не робила.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
и почему мы тупим на 67 соединении
« Ответ #6 : 27 Апреля 2003, 16:18:23 »
Сорри, чего-то я действительно напутал.
Проверил несколько раз - действительно не работает!
Простите за дезинформацию.
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
и почему мы тупим на 67 соединении
« Ответ #7 : 27 Апреля 2003, 16:34:49 »
Постой, беру свои слова обратно!
Вот кусок кода, который у меня отлично работает:

function getmicrotime(){
	
list(
$usec$sec) = explode(" ",microtime());
	
return ((float)
$usec + (float)$sec);
}

$time_start getmicrotime();

$fp = @fsockopen ("www.microsoft.com"81$errno$errstr5);
if (!
$fp){
	
echo 
"$errstr ($errno)
\\n"
;
} else {
	
fclose ($fp);
}

$time_end getmicrotime();
$time $time_end $time_start;
echo 
"Result: $time seconds<BR>\\n";


Так как 81 порт у майкрософт.ком закрыт, то скрипт будет коннектиться к нему, пока не истечет таймаут. Сколько таймаут задашь - столько и будет ждать ответа.
Но вот почему это не работает с адресами серверов, а не с портами, я пока не понял. Скорее всего, из-за настроек DNS-сервера провайдера. Мой, например, пускает меня в инет только через прокси (принудительно, в настройках браузера вообще ничего не установлено) и на не существующие адреса выдает свою HTML-страничку с ошибкой. Я не уверен, но по-моему это имеет значение, особенно когда коннект идет по 80 порту (прокси стоит только на HTTP).
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
и почему мы тупим на 67 соединении
« Ответ #8 : 27 Апреля 2003, 16:44:37 »
У меня работает твой скрипт (сейчас я на XP) и чё прикольно он мне выдал:
Цитировать
Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. (10060)
Result: 5.0823359489441 seconds

т.е. получается переменную $errstr - отдаёт пров!?
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
и почему мы тупим на 67 соединении
« Ответ #9 : 27 Апреля 2003, 16:50:06 »
Вряд ли, скорее всего это встроенные в виндовые сокетные библиотеки сообщения об ошибках.
У меня вот что выдало:
Цитировать

A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. (10060)
Result: 5.00312507153 seconds


У меня XP английский, а пров - украинский :)
Если у тебя XP русский, то вроде всё понятно.
Но сам факт в том, что таймаут всё же работает!
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28