Страницы

Поиск по вопросам

суббота, 28 декабря 2019 г.

PHP: include или все в один файл?

#include #php #быстродействие


Здравствуйте! Хотел спросить у разработчиков, у которых возможно был такой опыт!
В общем есть идея: писать код модульным образом (каждый модуль в своем файле), и инклудить
требуемые модули в итоге в главный файл (к примеру из всех 30 модулей нам нужно только
некоторые 5), или такой метод: в конце написания модулей, "склеить" их всех в один
файл и сделать один инклуд в главный файл? Для более ясной картины: инклудить 5 требуемых
файлов по 100 кб, и с ними работать, или инклудить 1 файл 3000 кб, со всеми сразу склеенными
модулями - что быстрее?    


Ответы

Ответ 1



Вы думаете про оптимизацию на include ? так вы полный путь указывайте и никакого поиска не будет. А вообще в php узкие места не при загрузке файлов обычно, а в первую очередь в логике приложения, во вторую(а часто и в первую) - при обмене с базой данных и в третью - при интерпретации кода, независимо от того в одном это файле или в нескольких, тем более как вы сами заметили не каждый модуль понадобится при каждом запросе, т.е. при использовании схемы "один большой файл", вы будете как минимум производить синтаксическую проверку этого большого файла при каждом запуске.

Ответ 2



Вообще то такой трюк дает прирост производительности (в особенности в связке с акселератором). require/include в любом случае тратит время на подключение файла (а само время конечно же зависит от HDD и файловой системы), а SSD диски есть не у всех. Например возьмем Zend и посмотрим тут, так что в этом есть смысл. Но, не любая архитектура проекта позволяет реализовать подобное.

Ответ 3



Это бред. По сути вы дадите нагрузку больше. '; echo memory_get_usage() . "\n"; //50632 ?> '; echo memory_get_usage() . "\n"; //50192 ?> вы можете в магазине сложить всё в один пакет, а можете рассортировать по пакетам, нагрузка только увеличится (время на раскладку + вес пакетов) другое дело если вы будете из магазина носить небольшие пакеты, т.е. отдельные файлы рега.пхп лк.пхп, но защитить большой пакет легче, чем маленький, смысл у этой функции только в подключении однотипных файлов например конфиг.пхп а лучше не мучайтесь этой фигней, пишите как удобнее вам, намного больше уходит ввод новых переменных

Ответ 4



Посмотрите мою статью с исчерпывающим исследованием по теме вопроса. Сравнение производительности автозагрузки и объединения классов в один файл

Комментариев нет:

Отправить комментарий