Forum Webscript.Ru

Программирование => PHP => Тема начата: alex6999 от 02 Декабря 2003, 12:59:50

Название: почему так медленно работает скрипт?
Отправлено: alex6999 от 02 Декабря 2003, 12:59:50
Почему так медленно работает скрипт?
браузер тоже самое делает просто за секунду, а скрипт секунд 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 от 02 Декабря 2003, 13:15:37
Цитировать
alex6999:
браузер тоже самое делает просто за секунду, а скрипт секунд 20.

может браузер делает не то же самое, а берет из кэша? =)
Название: почему так медленно работает скрипт?
Отправлено: alex6999 от 02 Декабря 2003, 13:27:06
Минутку, это даже не GET, это POST, ну не может у ИЕ так снести крышу что-бы брать после этого из кэша.

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

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

код вроде прост как 5 копеек, может в настройках ПХП что подкрутить надо, там буферы какие-нибуть.....
всё стоит по умолчанию.
Название: почему так медленно работает скрипт?
Отправлено: voodoo от 02 Декабря 2003, 13:45:43
так в запросе же кип-элайв.
браузер -- он типа умный, он из кип-элайва показывает полученную часть, а вышеприведенный скрипт в данной ситуации ждет таймаута от сервера.
Название: почему так медленно работает скрипт?
Отправлено: alex6999 от 05 Декабря 2003, 03:32:58
я понял, это не кип элайв, ведь соединение я закрываю
это вот что
$site.=fgets($fsoc,1000);
сначало берётся хорошо, а последняя тысяча тормозится, ведь с сервера передаётся не 1000, а скрипт ждёт тысячу, вопрос, как пофиксить данный кусок?
Название: почему так медленно работает скрипт?
Отправлено: Mаster от 05 Декабря 2003, 10:58:21
alex6999 чушь. если в строке fgets находит символ EOF (указатель конца файла) или "\\n" (конец строки), то возвращяются символы вплоть до этого. И длинна строки может быть меньше указанной.

Смотри пост voodoo
Название: почему так медленно работает скрипт?
Отправлено: FreeSpace от 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, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)
\\n";
} else {
     /*
    bla-bla-bla
    */
    fclose ($fp);
}


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

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