Автор Тема: почему так медленно работает скрипт?  (Прочитано 3804 раз)

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

Оффлайн alex6999

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Почему так медленно работает скрипт?
браузер тоже самое делает просто за секунду, а скрипт секунд 20.
страничку он втягивает после этого всего 7 килобайт


$w="name=$name";

$q1="POST ********** HTTP/1.1\\r\\n"
."Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, "
."application/vnd.ms-excel, application/msword, */*\\r\\n"
."Referer: http://*********\\r\\n"
."Accept-Language: en-ca,ru;q=0.5\\r\\n"
."Content-Type: application/x-www-form-urlencoded\\r\\n"
."Accept-Encoding: gzip, deflate\\r\\n"
."User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF; .NET CLR 1.0.3705)\\r\\n"
."Host: **********\\r\\n"
."Content-Length: ".strlen($w)."\\r\\n"
."Connection: Keep-Alive\\r\\n"
."Cache-Control: no-cache\\r\\n"
."\\r\\n\\r\\n";
$q=$q1.$w;



$host = "*********";
$port = "80";

$site="";
$fsoc = fsockopen($host,$port);
  fputs($fsoc, $q);
  while (!feof($fsoc)){
    $site.=fgets($fsoc,1000);
  };
fclose($fsoc);

echo "
".htmlspecialchars($ins);


Спасибо

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
почему так медленно работает скрипт?
« Ответ #1 : 02 Декабря 2003, 13:15:37 »
Цитировать
alex6999:
браузер тоже самое делает просто за секунду, а скрипт секунд 20.

может браузер делает не то же самое, а берет из кэша? =)
ну, будем исповедоваться?

Оффлайн alex6999

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
почему так медленно работает скрипт?
« Ответ #2 : 02 Декабря 2003, 13:27:06 »
Минутку, это даже не GET, это POST, ну не может у ИЕ так снести крышу что-бы брать после этого из кэша.

нет, из кэша он не берёт, это абсолютно точно.

подобная задача у меня ещё выполняется, а если приходится делать это 2 раза - я вылетаю за 30 секунд на исполнение скрипта.

код вроде прост как 5 копеек, может в настройках ПХП что подкрутить надо, там буферы какие-нибуть.....
всё стоит по умолчанию.

Оффлайн voodoo

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 25
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vochat.com/
почему так медленно работает скрипт?
« Ответ #3 : 02 Декабря 2003, 13:45:43 »
так в запросе же кип-элайв.
браузер -- он типа умный, он из кип-элайва показывает полученную часть, а вышеприведенный скрипт в данной ситуации ждет таймаута от сервера.
WBR и все такое,
Voodoo http://vochat.com/

Оффлайн alex6999

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
почему так медленно работает скрипт?
« Ответ #4 : 05 Декабря 2003, 03:32:58 »
я понял, это не кип элайв, ведь соединение я закрываю
это вот что
$site.=fgets($fsoc,1000);
сначало берётся хорошо, а последняя тысяча тормозится, ведь с сервера передаётся не 1000, а скрипт ждёт тысячу, вопрос, как пофиксить данный кусок?

Оффлайн Mаster

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 71
  • +0/-0
  • 0
    • Просмотр профиля
    • http://code.msk.ru/
почему так медленно работает скрипт?
« Ответ #5 : 05 Декабря 2003, 10:58:21 »
alex6999 чушь. если в строке fgets находит символ EOF (указатель конца файла) или "\\n" (конец строки), то возвращяются символы вплоть до этого. И длинна строки может быть меньше указанной.

Смотри пост voodoo
Дурак учится на своих ошибках, умный на чужих.
умные учатся у дураков

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
почему так медленно работает скрипт?
« Ответ #6 : 05 Декабря 2003, 20:51:25 »
Цитировать
alex6999:
."Cache-Control: no-cache\\r\\n"
."\\r\\n\\r\\n";
$q=$q1.$w;

Перед данными получается три последовательности "\\r\\n", а должно быть, если не ошибаюсь, две.

Лучше открывай сокетное соединение как указано в мане:

$fp 
fsockopen ("www.example.com"80$errno$errstr30); 
if (!
$fp) { 
    echo 
"$errstr ($errno)
\\n"

} else { 
     
/*
    bla-bla-bla
    */
    
fclose ($fp); 



Цитировать
alex6999:
."Connection: Keep-Alive\\r\\n"

Про это читай выше.
voodoo полностью прав.
Или убери этот заголовок вообще, или напиши Connection: close
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

 

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