function readfile_chunked($filename, $retbytes=true) {
$chunksize = 1*(1024*1024); // 1MB chunks - must be less than 2MB!
//$chunksize = filesize($filename);
$buffer = '';
$cnt =0;
$handle = fopen($filename, 'rb');
if ($handle === false) {
return false;
}
while (!feof($handle)) {
@set_time_limit(60*60); //reset time limit to 60 min - should be enough for 1 MB chunk
$buffer = fread($handle, $chunksize);
echo $buffer;
flush();
if ($retbytes) {
$cnt += strlen($buffer);
}
}
$status = fclose($handle);
if ($retbytes && $status) {
return $cnt; // return num. bytes delivered like readfile() does.
}
return $status;
}
она отдаёт файлы браузеру(файлы различные от картинок до word-файлов)
после переустановке сервера, она вроде файлы отдает(размер совпадает) но портит их, файлы просто не открываются, вроде что-то с кодировкой.
В чём может быть дело?
Спустя 4 часа, 12 минут, 5 секунд (13.09.2010 - 10:49) maxims написал(а):
up
Спустя 53 минуты, 58 секунд (13.09.2010 - 11:43) SlavaFr написал(а):
ну возьми бинерный едитор и посмотри чем файлы отличаются.
возможно ошибка вовсе не в этой функции а в хедерах запрятана.
возможно ошибка вовсе не в этой функции а в хедерах запрятана.
Спустя 18 часов, 54 минуты, 35 секунд (14.09.2010 - 06:38) maxims написал(а):
в начало файла подписывает два байта 0а 0а, через бинарный редактор убираю их файл начинает открываться
Спустя 1 час, 51 минута, 13 секунд (14.09.2010 - 08:29) linker написал(а):
Я могу ошибаться, но мне кажется это из -за этой хрени 'rb', а может где-то в начальных заголовках лишние переводы строк.
Спустя 15 часов, 53 минуты, 50 секунд (15.09.2010 - 00:23) dr.5y51em написал(а):
Я конечно не супер спец, но по моему два байта в начало документа дописывается с UTF8 (BOM). Попробуй, открой скрипт через какой нибудь редактор (Notepad++, AkePad) и сохрани в UTF8 (без BOM).
Спустя 4 часа, 30 минут, 46 секунд (15.09.2010 - 04:53) maxims написал(а):
exit('123'); // Just send it out raw
@header('Content-Length: '.$filesize);
@header('Content-Type: '.$mimetype);
while (@ob_end_flush()); //flush the buffers - save memory and disable sid rewrite
if ($pathisstring) {
echo $path;
}else {
readfile_chunked($path);
}
этот код присылает браузеру в байтах 31 32 33 0a 0a а должен 31 32 33
при этом хедеры не выполняются, значит дело не в хедерах.
этот код
// Just send it out raw
@header('Content-Length: '.$filesize);
@header('Content-Type: '.$mimetype);
exit('123');
while (@ob_end_flush()); //flush the buffers - save memory and disable sid rewrite
if ($pathisstring) {
echo $path;
}else {
readfile_chunked($path);
}
присылает в байтах 0a 0a 31 32 33
ничего не понимаю((((((
P.S: байт 0a - это символ перехода на новую строку, "энтер" вообщем.
Спустя 4 часа, 59 минут, 49 секунд (15.09.2010 - 09:53) maxims написал(а):
up
Спустя 4 минуты, 34 секунды (15.09.2010 - 09:58) Basili4 написал(а):
мож как то так попробывать
$mimetype=trim($mimetype,"\n");
$mimetype=trim($mimetype,"\n");
Спустя 21 минута, 5 секунд (15.09.2010 - 10:19) ZSH написал(а):
Цитата |
она отдаёт файлы браузеру(файлы различные от картинок до word-файлов) после переустановке сервера, она вроде файлы отдает(размер совпадает) но портит их, файлы просто не открываются, вроде что-то с кодировкой. В чём может быть дело? |
после установки не включена автоматическая буферизация вывода
Спустя 40 минут, 6 секунд (15.09.2010 - 10:59) twin написал(а):
Я слышал где то, что некоторые сервера принудительно добавляют перенос в конец файла.
А чего readfile() не устроила?
А чего readfile() не устроила?
Спустя 9 минут, 24 секунды (15.09.2010 - 11:08) ZSH написал(а):
Цитата |
@header('Content-Length: '.$filesize); @header('Content-Type: '.$mimetype); |
убрать собачки и будут ошибки.
Спустя 17 часов, 45 минут, 39 секунд (16.09.2010 - 04:54) maxims написал(а):
Проблема решена!!!!!! ))))))))))))) Ураааааа!!!!!!!!!
Как всегда оказалось всё просто, в одной из подключаемых библиотек после тега
Почему-то раньше серв их не отправлял.......
Как всегда оказалось всё просто, в одной из подключаемых библиотек после тега
?>
стояло два знака переноса.Почему-то раньше серв их не отправлял.......
Спустя 3 часа, 32 минуты, 9 секунд (16.09.2010 - 08:26) Basili4 написал(а):
maxims
избежания именно этого рекомендуют не ставть ?>
избежания именно этого рекомендуют не ставть ?>
Спустя 45 минут, 16 секунд (16.09.2010 - 09:11) ZSH написал(а):
Цитата |
стояло два знака переноса. Почему-то раньше серв их не отправлял....... |
отправлял, но уже после заголовков.