производительность открытого файла php - PullRequest
7 голосов
/ 21 ноября 2011

У меня вопрос по php и открытию файлов

PHP имеет более одной функции для открытия файлов:

file_get_contents()
fopen()
file()

Мой вопрос связан с производительностью. На моем сервере я должен открыть файлы, затем проверить их содержимое, внести некоторые изменения, если мне нужно, и сохранить их заново.

Я хочу сделать эти изменения как можно быстрее

какой файл лучше открыть (маленький и большой) по производительности? Имея в виду; зачем использовать один в предпочтении другим?

1 Ответ

8 голосов
/ 21 ноября 2011

file_get_contents () и file () оба читают весь файл в память - разница в том, что один возвращает строку, а другой возвращает массив.

Для небольших (ish) файлов это может бытьбольшая потеря производительности для вас.

Для больших файлов это может определенно оказать огромное влияние.Если размер целевого файла составляет 20 МБ, и вам необходимо проверить определенный сегмент данных на некотором известном расстоянии от файла, fopen (), а затем поиск в этой известной позиции, чтобы получить только те данные, которые вам нужны, будет гораздо быстрее,порядка нескольких величин.

20 МБ - это, конечно, просто произвольное число, которое я извлек из воздуха, но учтите, что произвольно большой файл может просто превысить ограничения на использование ресурсов, наложенные вашим сервером на ваш PHPокружающая среда.

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