В чем преимущество «эхо» чанков при выводе файла? - PullRequest
5 голосов
/ 04 января 2011

Что такое выгода и разница между следующим:

Заявление 1:

header("Content-type: image/jpeg");
header('Expires: ' . date('r',time() + 864000));
header("Pragma: public");
header("Cache-Control: public");
header("Content-Length: " . strlen($contents));
$splitString = str_split($contents, 1024);
foreach($splitString as $chunk)
echo $chunk;

Заявление 2:

header("Content-type: image/jpeg");
header('Expires: ' . date('r',time() + 864000));
header("Pragma: public");
header("Cache-Control: public");
header("Content-Length: " . strlen($contents));
echo $contents;

Ответы [ 4 ]

3 голосов
/ 04 января 2011

Из-за способа буферизации пакетов TCP / IP использование echo для отправки больших строк клиенту может привести к серьезному снижению производительности.Иногда это может добавить целую секунду ко времени обработки скрипта.Это даже происходит, когда используется выходная буферизация.

Если вам нужно отобразить большую строку, сначала разбейте ее на более мелкие фрагменты, а затем просмотрите каждый фрагмент. Таким образом, используя метод 1 для разделения строки ИЛИ используя substr для ее разделения и отправка клиенту выполняется быстрее для больших файлов, чем метод 2.

0 голосов
/ 04 января 2011

Если $contents очень большой, вы можете повторить его частями, чтобы остановить все это сразу.

0 голосов
/ 04 января 2011

в содержании первого оператора делится на порции по 1024 байта, а в одном порции содержится содержимое по 1024 байта, а во втором выражении определяется длина всего содержимого муравья, затем выводится эхо, но в первом делении на порцию и затем выводится эхо с помощью каждого по одному.

0 голосов
/ 04 января 2011

Оператор 1 добавляет ненужные накладные расходы и запутывание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...