Функция фопен плюёт на приписку к r - b. Даже если написать t, она будет выдавать файл в различных интерпритациях на разных операционных системах по-разному. Код (Text): ... $handle = fopen($filename, 'rb'); if ($handle === false) { return false; } while (!feof($handle)) { $buffer = fread($handle, $chunksize); echo $buffer; } ... Я что-то делаю не так?
Вообще не хотелось бы использовать данную функцию... Ибо получаю файл с фтп и выдаю клиенту, конечно криво, но ничего поделать не могу. Версия пхп 5.2.3
o_0 Ща блондиночный вопрос: В чем будет разница: PHP: <? $file=file_get_contents($filename); и PHP: <? $fp=fopen($filename,'r'); $fa=fread($fp); foreach($fa as $string) { $file.=$string; } ?
[vs], "пацаны, а я вааааще не в курсе" (с) Полотенчико из "Саут парка". Приведённый тобой код с foreach это что-то неожиданное по многим параметрам. Чти мать, отца и мануал. Если ты имел в виду Код (Text): while (!feof($fp)) $file .= fread($fp, 1024); То что лучше: брать кусками или всё сразу? Особенно если файл большой. Очевидно. Если ты имел в виду такое Код (Text): $file = fread($fp, filesize($filename)); То, вроде как, никакой разницы.
В том, что вот здесь сказано: Правда, я не понял - влияет ли это как-то на файлы, открытые по ftp или http протоколу. VirHos Я что-то не пойму, а чем не нравятся специально под работу с ftp заточенные функции? Например, ftp_fget.
Попробовал Код (Text): $context = stream_context_create(array('ftp' => array ( 'mode' => 'binary' ))); $handle = file_get_contents($filename, null, $context); На виндах выдаёт нормально, на линухе чушь. Как и с фопеном. Ну а копи точно так же сохраняет в локальный файл ведь.
Ну хз. По мне так это если не гон, то преувеличение. Посмотреть хотя бы на параметры offset и maxlen: где они и когда были введены. Пахнет кривыми заплатками. P.S. Про readfile(), если не изменяет память, такое же писали: мол, лучше всего использовать для чтения больших файлов. А что в итоге? Кирдык серверу. Такие пироги.