|
|
|
| здравствуйте. столкнулся со следующей проблемой - нужно вывести некие данные предположительно неограниченного размера.
данные хранятся в переменной $out, простой вывод через echo, print работает не корректно, данные либо отображаются не полностью (отображает только килобайт 20 примерно), либо вообще ничего не отображается.
попробовал следующим образом
<?php
// $sz = размер данных
if($sz>10000){
$all = ceil($sz/10000);
for($i=0; $i<$all; ++$i){
echo mb_substr($out,($i*10000),(($i*10000)+10000));
}
}
else{
echo $out;
}
?>
|
но так же не успешно.
Всяческие подстановки flush(); и т.п. функций так же мне не помогли.
Да, отмечу что в .htaccess прописано следующее
php_flag zlib.output_compression On
php_value zlib.output_compression_level 5
|
Помогите. | |
|
|
|
|
|
|
|
для: Gemorroj
(11.11.2008 в 14:35)
| | 1) Каков размер $out в байтах?
2) Вам нужно вывести эту переменную именно на одной странице? Разбить её на несколько страниц не хотите? | |
|
|
|
|
|
|
|
для: cheops
(11.11.2008 в 17:27)
| | в тестовом примере примерно 70 кб
нужно вывести всю переменную целиком и сразу.
вот примерно как это должно выглядеть
http://wapinet.ru/files/show.htm?d=4&f=mysql.htm
кстати... подумалось, ведь на этой странице весь файл и даже еще больший по размеру его отформатированный вариант отображается нормально, а вот если попробовать его скачать (text или attach), то получаем только конец файла. На Windows вообще ничего не получаем.
Все данные хранятся только в переменных и не записываются в файлы. | |
|
|
|
|
|
|
|
для: Gemorroj
(11.11.2008 в 17:52)
| | Вообще-то не больно много... А у вас какая версия Apache используется? Это локальная машина или сервер? | |
|
|
|
|
|
|
|
для: cheops
(12.11.2008 в 11:05)
| | Это выделенный сервер.
Апач 2.2.9, PHP 5.2.6 как модуль апача. | |
|
|
|
|
|
|
|
для: Gemorroj
(12.11.2008 в 12:19)
| | http://wapinet.ru/files/show.htm?d=5&f=8.css более короткие отображает корректно. | |
|
|
|
|
|
|
|
для: Gemorroj
(12.11.2008 в 15:26)
| | кажется нашел причину.
т.к. контент отгружается посредством скрипта, я сам генерирую необходимые заголовки, в т.ч. и Content-Length, так вот mb_strlen дает меньший результат чем реальный размер переменной.
Как мне думается проблема в php_flag zlib.output_compression On php_value zlib.output_compression_level 5, если посмотреть возвращаемые заголовки, то заголовка Content-Encoding почему-то нет. Хотя в phpinfo директивы станавливаются корректно, и даже пришет HTTP Response Headers - Content-Encoding gzip. Хотя реально этот заголовок не передается. При чем эта же самая проблема и на локальном "Денвере" и на боевом сервере с FreeBSD + Apache + PHP. Отключаем в .htaccess компрессию и... все работает как положено. | |
|
|
|