Что быстрее include или file_get_contents

Статус
В этой теме нельзя размещать новые ответы.

RigVan

Постоянный член клуба
Что быстрее include или file_get_contents

Искал инфу но нигде не нашел, что быстрее и предпочтительней применять include или file_get_contents, для "подключения" файлов на локальном сервере? Думаю, что использовать в шаблонизаторе...
 

Фанат

oncle terrible
Команда форума
а других критериев выбора между этими двумя конструкциями у тебя нету?
 

RigVan

Постоянный член клуба
Фанат
нет других критериев вроде нет. Файлы открываются из "соседней" папки.
 

Фанат

oncle terrible
Команда форума
офигеть.
то есть, для тебя это синонимы, и выполняют одинаковую функцию?
завидую. мне бы такой уровень абстракции.
 

RigVan

Постоянный член клуба
Фанат
просто и тот и другой могут выполнять схожие задачи, вот и задался я по этому поводу вопросом. Еще в шаблоне не всегда удобно использовать include, когда например нужно "пропарсить" подключаемый файл, а до этого он сохраняется в переменной, потому что тогда придется использовать eval, а это не желательно... Я не спец в програмировании, скорее это для меня производственная необходимость. Потому прошу простить, если я допускаю грубые ошибки в своих суждениях...
Т.е. по ходу удобнее использовать "file_get_contents()" и к тому же такая фишка об этой функции пишется:
"Использование функции file_get_contents() наиболее предпочтительно в случае необходимости получить содержимое файла целиком, поскольку для улучшения производительности функция использует алгоритм 'memory mapping'... " Но это вроде как пишется в контексте сравнения с ф-ей file()...
Короче в запутках я полных :)
 

Фанат

oncle terrible
Команда форума
чтобы не допускать грубых ошибок в своих сужденияхЮ, надо читать документацию
 

RigVan

Постоянный член клуба
Фанат
Может скажешь хоть в каком месте рыть?
А то следуя по твоему "любезному" совету, вроде как и форум PHPClub.ru тоже непонятно зачем существует, если все можно в "документации прочитать"...
 

aXis

Новичок
Автор оригинала: RigVan
Фанат
Может скажешь хоть в каком месте рыть?
А то следуя по твоему "любезному" совету, вроде как и форум PHPClub.ru тоже непонятно зачем существует, если все можно в "документации прочитать"...
Это можно. еще как можно. include подключает файл причем производит его синтаксический разбор + пытается выполнить если найден код пхп.
При этом все что не пхп выводится в браузер (ну или куда там вывод направлен)
А file_get_contents просто тупо получается содержимое файл как есть.
 

RigVan

Постоянный член клуба
aXis
т.е. для теоритически получается, что все-таки file_get_contents быстрее (раз разбор ни какой не производит)? Тогда вообще фиг знает, что.... у меня при "замерах" скорости file_get_contents на 0,4 секунды дольше работает...
 

Фанат

oncle terrible
Команда форума
офигеть.
и ты не можешь выбрать из этих двух тот, который делает то что тебе надо. фантастика
 

RigVan

Постоянный член клуба
Фанат
Они оба могут делать, то что мне надо, с file_get_contents удобнее, и по теории он вроде должен быстрее работать, но у меня почему-то наоборот :(
 

RigVan

Постоянный член клуба
Господа! Прошу милостиво извинить за идиотизм :) Проблема как обчно в другом месте:
в старом коде было include_once(), который находился в цикле, после я невнимательно его заменил на file_get_contents естественно в каждом проходе цикла файл подключался заново :)))

Теперь со спокойной совестью юзаю file_get_contents!
 

aXis

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

Фанат

oncle terrible
Команда форума
а ведь он остался в убеждении, что file_get_contents нужно использовать только потому, что быстрее
 

Angerslave

Новичок
Фанат, ну ты же ему не сумел втолковать, что если в подключаемом файле окажется код PHP, то инклуд его выполнит, а file_get_contents - нет... И что если эти файлы формируются пользователями(аплоад например), то первое очень небезопасно.
 

RigVan

Постоянный член клуба
Автор оригинала: Angerslave
Фанат, ну ты же ему не сумел втолковать, что если в подключаемом файле окажется код PHP, то инклуд его выполнит, а file_get_contents - нет... И что если эти файлы формируются пользователями(аплоад например), то первое очень небезопасно.
Файлы не формируются пользователями. И нет там PHP кода, это просто текстовые файлы с HTML разметкой, в которых некоторые элементы заменяются по шаблону... например {title} -> "заголовок страницы..." только и всего. Если я где-то заблуждаюсь, то прошу поправить меня.
 

aXis

Новичок
RigVan

О как. Тогда вопрос - а как в этом шаблонизаторе (вроде бы это оно) заменять элементы при подключении через Include ? Ведь тогда содержимое файла недоступно для редактирования. Хочется знать как это делается.
 

RigVan

Постоянный член клуба
aXis
1) Вывод может быть не только в браузер
2) Не все файлы нужно парсить :)
3) А еще можно наоборот, вместо include использовать:
PHP:
echo file_get_contents('file.html');
И тут интересно, что все-таки окажется быстрее include или file_get_contents?
Но это уже офтоп :) в любом случае спасибо, что помагали!
 

aXis

Новичок
>И тут интересно, что все-таки окажется быстрее include или file_get_contents?
Какая разница что быстрее, если include не может выполнить задачу по получению содержимого файла для дальнейшей обработки и/или вывода без изврата типа перехвата потока вывода.

Их вообще нельзя сравнивать. Пусть include хоть в 100 раз быстрее, толку нет, если им нельзя решить задачу простым способом.

А если хочешь знать что быстрее то решается оно так.
>file_get_contents
1) читаем файл
2) заменяем что надо
3) выводим

>include
1) включаем буферизацию вывода
2) инклудим файл
3) читаем из буфера то что туда попало и чистим его.
4) в полученных данных заменяем что надо
5) выводим.
вроде так. поскольку функции служат для разных целей. И мерять надо не их а скорость выполнения этих обоих алгоритмов.

Тема закрыта.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху