powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP / Таймаут чтения из сокета
1 сообщений из 1, страница 1 из 1
PHP / Таймаут чтения из сокета
    #37982680
poiuytrewq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер,

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

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


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