Keep-Aliven

lbv

Guest
Keep-Aliven

Нужно послать серверу два запроса и получить два ответа...
Делаю следующее:


PHP:
$fp=fsockopen ("www.php.net",80,$er,$ern);


$h1="GET http://www.php.net/apache HTTP/1.1\nHost: www.php.net\nConnection: Keep-Aliven\n\n";
fputs($fp,$h1);

	while(!feof($fp))
	{
		
		$str1.=fgets($fp,1000000);
	}
	
	
	
	echo $str1."<br><br>";	
	

$h2="GET http://www.php.net/cookie HTTP/1.1\nHost: www.php.net\n\n";
fputs($fp,$h2);

	while(!feof($fp))
	{
	
		$str2.=fgets($fp,1000000);
	}
	
	
	
	echo $str2."<br><br>";


	fflush($fp);
	fclose($fp);
1. Скрипт ждет 15 секунд и только потом выдает результат(В apache стоит min 15, max 100).
2. Не выполняется второй запрос.
 

Кром

Новичок
>Keep-Aliven
Правильно: Keep-Alive

[m]feof[/m] может не работать правильно при HTTP/1.1. Читай ман и комментарии по фунции.
Заодно посмотри примеры в мануале по функциям [m]fsockopen[/m], [m]fgets[/m], [m]fputs[/m]. Там есть готовые решения.
 

lbv

Guest
Originally posted by Кром
>Keep-Aliven
Правильно: Keep-Alive

[m]feof[/m] может не работать правильно при HTTP/1.1. Читай ман и комментарии по фунции.
Заодно посмотри примеры в мануале по функциям [m]fsockopen[/m], [m]fgets[/m], [m]fputs[/m]. Там есть готовые решения.
HTTP 1.0 Поддерживает keep-alive(n, не играет роли...)?
Почему ждет 15 секунд?

-~{}~ 22.12.04 12:25:

...Не нашел...
 

Кром

Новичок
>HTTP 1.0 Поддерживает keep-alive(n, не играет роли...)?

При чем тут 1.0? Мы сейчас говорим о HTTP 1.1.
Какой еще "n"? Ты вообще в курсе что такое n? Я - нет.

>...Не нашел...

Что не нашел? Можешь говорить более связно?
 

Profic

just Profic (PHP5 BetaTeam)
ПАТАМУ!
[m]feof[/m]() - сам догадаешься когда эта фунция вернет true или носом тыкать?
 

Screjet

Новичок
Тебе сервер высылает Content-Length,
читаешь это число байтов и высылаешь новый запрос (рекурсивно/циклически).
 

lbv

Guest
Screjet, т.е. сначала получаем данные(ответы) из всех запросов, а затем полученную строку делим используя записанный Conten-L... всех ответов?

Я правильно понял?
 

Screjet

Новичок

SiMM

Новичок
"Должна" и "всегда приходит" - всё таки разные понятия. Если забираемый контент - не статика, никто не обяжет автора скрипта отдавать Content-Length. И как же быть в подобной ситуёвине? Ведь keep-allive уже послан. Или я чего-то непонимаю или понимаю неверно?
 

Screjet

Новичок
Или я чего-то непонимаю или понимаю неверно?
Сервер отдает размер сообщения в заголовке (Content-Length), и не закрывает соединение, а ожидает новый запрос.

А вообще не заморачивайтесь, и не используйте Keep-Alive в запросе.
 

SiMM

Новичок
Автор оригинала: Screjet
не закрывает соединение, а ожидает новый запрос.
Да это то я понимаю, просто при подсматривании при запросах динамической инфы не вижу
размер сообщения в заголовке (Content-Length)
А вообще не заморачивайтесь, и не используйте Keep-Alive в запросе.
Так хотя бы для ликбеза, так сказать ;) А вообще - так не быстрее разве? Просто появилась задачка - забрать сразу несколько файлов. Пока решаю file_get_contents'ом, размышляю на тему "можно ли пошустрей".
 
Сверху