Крупный шрифт http / echo break http ответ - PullRequest
1 голос
/ 23 сентября 2011

У меня проблема с эхо / печатью, которая возвращает большое количество данных.Ответ разбит и выглядит следующим образом:

  • конец данных
  • http заголовок ответа напечатан в теле
  • начало данных

Я запускаю следующий скрипт в своем браузере, чтобы повторить проблему:

<?php

// Make a large array of strings
for($i=0;$i<10000;$i++)
{        
  $arr[] = "testing this string becuase it is must longer than all the rest to see if we can replicate the problem. testing this string becuase it is must longer than all the rest to see if we can replicate the problem. testing this string becuase it is must longer than all the rest to see if we can replicate the problem.";
}

// Create one large string from array
$var = implode("-",$arr);

// Set HTTP headers to ensure we are not 'chunking' response
header('Content-Length: '.strlen($var)); 
header('Content-type: text/html');

// Print response
echo $var;

?>

Что здесь происходит?

Может кто-нибудь еще попробовать?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2011

Браузеры часто ограничивают символы, которые вам разрешено пропускать через переменную get.Чтобы обойти это, вы можете кодировать строку с помощью base 64, а затем декодировать ее после получения ответа.

Я думаю, что есть библиотеки кодирования javascript base 64.Как этот: http://www.webtoolkit.info/javascript-base64.html

0 голосов
/ 23 сентября 2011

Возможно, на вашем сервере активирована автоматическая буферизация вывода.Если буфер переполняется, он просто начинает выталкивать оставшиеся данные.

Обратите внимание, что что-то вроде сжатия gzip также неявно буферизирует вывод.Если это так, вызов ob_end_flush() после заголовков должен его решить.

...