powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP почему вывод (echo) расходует память?
7 сообщений из 7, страница 1 из 1
PHP почему вывод (echo) расходует память?
    #40084313
poiuytrewq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет,

объясните пожалуйста, почему вывод данных в браузер расходует оперативку?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
$entries = 10000;
$fields = 10;

$data = [];

for($e = 1; $e <= $entries; $e++)
{
	$entry = [];

	for($f = 1; $f <= $fields; $f++)
	{
		$entry['field'.$f] = mt_rand(11111,99999);
	}

	$entry = serialize($entry);

//	echo($entry);
}

$pageGenMaxRam = number_format(memory_get_peak_usage()/1024, 1);

die("Max RAM usage {$pageGenMaxRam}Kb");



С закомментированной echo, пиковое потребление памяти 546.3Kb, а с раскомментированной, в пять раз больше - 2,555.5Kb
...
Рейтинг: 0 / 0
PHP почему вывод (echo) расходует память?
    #40084315
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
poiuytrewq,

Неявно преобразует $entry в строку.
...
Рейтинг: 0 / 0
PHP почему вывод (echo) расходует память?
    #40084363
poiuytrewq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

можно подробнее? Преобразует $entry в строку функция serialize, но, 5 кратное увеличение объёма максимальной потребляемой памяти происходит только если в коде есть echo, выводящая эту строку в браузер.
...
Рейтинг: 0 / 0
PHP почему вывод (echo) расходует память?
    #40084378
DHDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
poiuytrewq,

http://sandbox.onlinephpfunctions.com/code/6e478451acfe37d124967be760e0c59407015cca

нет различий, всегда "Max RAM usage 410.8Kb"
...
Рейтинг: 0 / 0
PHP почему вывод (echo) расходует память?
    #40084387
может там оптимизатор забивает на все расчёты, если они потом не используются
...
Рейтинг: 0 / 0
PHP почему вывод (echo) расходует память?
    #40084397
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
poiuytrewq
есть echo, выводящая эту строку в браузер
Немножко не совсем так. Или даже совсем не так. Ни о каком браузере echo понятия не имеет. Echo отдает вывод в выходной буфер (или в поток stdout). А далее в зависимости от кучи особенностей данные либо отдаются из буфера сразу как есть, блоками или накапливаются до окончания работы скрипта или до команды принудительного сброса буфера. С другой стороны, если речь идет о браузере, то между ним (браузером или, в общем случае, клиентом) и PHP есть еще вебсервер со своими заморочками (например, ему интереснее получить от PHP весь вывод сразу, чтобы сделать сжатие на лету и отправить клиенту).

Для сравнения попробуйте выполнить код из консоли.
...
Рейтинг: 0 / 0
PHP почему вывод (echo) расходует память?
    #40084554
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
poiuytrewq
можно подробнее? Преобразует $entry в строку функция serialize, но, 5 кратное увеличение объёма максимальной потребляемой памяти происходит только если в коде есть echo, выводящая эту строку в браузер.

Выводит оно не в браузер, а в stdout. serialize может не выполняться, потому что нигде не используется дальше.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP почему вывод (echo) расходует память?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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