Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP / Таймаут чтения из сокета / 1 сообщений из 1, страница 1 из 1
03.10.2012, 21:25:01
    #37982680
poiuytrewq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP / Таймаут чтения из сокета
Добрый вечер,

помогите пожалуйста разобраться, как установить таймаут чтения из сокета, и как понять, что таймаут наступил (данные дочитаны не до конца). Я набросал такой код:

Код: php
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.
29.
30.
31.
32.
$url	= 'http://rusbible.ru/files/onefile/Bible.txt';	// около 4Мб
$host	= parse_url($url, PHP_URL_HOST);

if ($fp = fsockopen($host, 80, $errno, $errstr, 5))
{
	$query  = 'GET ' . $url . ' HTTP/1.1'."\r\n";
	$query .= 'Host: ' . $host . "\r\n";
	$query .= 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8'."\r\n";
	$query .= "Connection: Close\r\n\r\n";

	fputs($fp, $query);

	stream_set_timeout($fp, 0, 100);

	$start = microtime(true);

	while(!feof($fp))
	{
		$html.= fgets($fp, 512);
	}

	$downTime = sprintf('%.0f', (microtime(true) - $start) * 1000);

	$info = stream_get_meta_data($fp);

	fclose($fp);

	echo "TIME - $downTime msec";
	print_r($info);

	die($html);
}



Вывод на экран:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
TIME - 2481 msec

Array
(
    [stream_type] => tcp_socket/ssl
    [mode] => r+
    [unread_bytes] => 0
    [seekable] => 
    [timed_out] => 
    [blocked] => 1
    [eof] => 1
)



т.е. заданный мною таймаут в 100мсек превышен...
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP / Таймаут чтения из сокета / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]