Klen
Новичок
Почему происходит остановка выполнения скрипта на функции fread($fp, 4096)
Имеем такой скрипт:
<?
$fp = fsockopen ("www.google.com", 80, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br>\n";
}
else
{
//Посылаем запрос к Google.com
fputs ($fp, "GET /search?hl=en&lr=&q=add&btnG=Search HTTP/1.1\r\n");
fputs ($fp, "Host: www.google.com\r\n");
fputs ($fp, "Connection: Keep-Alive\r\n\r\n");
while ($header = fgets($fp,4096))
{
// пропускаем заголовки
echo $header."<br>";
if($header == "\r\n") { break; }
}
// читаем документ в переменную (здесь и начинаются чудеса)
for($i=1; $i<20; $i++)
{
@$RetrieveFile .= fread($fp, 4096);
echo "__".$i."__";
}
}
?>
Получаем в браузере:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html
Set-Cookie: PREF=ID=5c21f893c3b7fa8a:TM=1148281639:LM=1148281639:S=X2cGakxCnqYjrUB4; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
Server: GWS/2.1
Transfer-Encoding: chunked
Date: Mon, 22 May 2006 07:07:19 GMT
__1____2____3____4____5____6__
Если в конце заголовков передаем 2 дополнительные пустые строки, т.е.
fputs ($fp, "Connection: Keep-Alive\r\n\r\n\r\n\r\n");
сразу же цикл выполняется до конца
__1____2____3____4____5____6____7____8____9____10____11____12____13____14____15____16____17____18____19__
Что за чудеса? Помогите пожалуйста!PHP4.4.0 Apache - 1.3.34
Имеем такой скрипт:
<?
$fp = fsockopen ("www.google.com", 80, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br>\n";
}
else
{
//Посылаем запрос к Google.com
fputs ($fp, "GET /search?hl=en&lr=&q=add&btnG=Search HTTP/1.1\r\n");
fputs ($fp, "Host: www.google.com\r\n");
fputs ($fp, "Connection: Keep-Alive\r\n\r\n");
while ($header = fgets($fp,4096))
{
// пропускаем заголовки
echo $header."<br>";
if($header == "\r\n") { break; }
}
// читаем документ в переменную (здесь и начинаются чудеса)
for($i=1; $i<20; $i++)
{
@$RetrieveFile .= fread($fp, 4096);
echo "__".$i."__";
}
}
?>
Получаем в браузере:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html
Set-Cookie: PREF=ID=5c21f893c3b7fa8a:TM=1148281639:LM=1148281639:S=X2cGakxCnqYjrUB4; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
Server: GWS/2.1
Transfer-Encoding: chunked
Date: Mon, 22 May 2006 07:07:19 GMT
__1____2____3____4____5____6__
Если в конце заголовков передаем 2 дополнительные пустые строки, т.е.
fputs ($fp, "Connection: Keep-Alive\r\n\r\n\r\n\r\n");
сразу же цикл выполняется до конца
__1____2____3____4____5____6____7____8____9____10____11____12____13____14____15____16____17____18____19__
Что за чудеса? Помогите пожалуйста!PHP4.4.0 Apache - 1.3.34
