В чем разница между file_get_contents и fread - PullRequest
13 голосов
/ 25 августа 2011

В чем разница между

$contents = file_get_contents("folder/somefile.txt")

и

$handle = fopen("folder/somefile.txt", "r");
$contents = fread($handle, filesize($filename));
fclose($handle);

с точки зрения производительности, обработки указателей файлов и управления памятью?

И правда ли, чтоfile_get_contents использует mmap, если ОС это позволяет?

Ответы [ 3 ]

5 голосов
/ 25 августа 2011

fread имеет ограничение на количество символов, которое вы можете прочитать, и это лучше для анализа данных.

file_get_contents не имеет ограничений на ввод (что я знаю). Это используется для доступа к внешнему API и тому подобное.

4 голосов
/ 25 августа 2011

fread() читает двоичные данные, file_get_contents() возвращает данные в виде строки.

2 голосов
/ 29 января 2014

Любопытные результаты! Предполагается, что функция file_get_contents () является оболочкой для fopen, но разделение fopen и fread, похоже, замедляет производительность. http://www.ebrueggeman.com/blog/php_benchmarking_fopen

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