PHP: include или все в один файл? — include php быстродействие

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
Загрузка...

Вопрос:


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

Автор вопроса: axejko

zb’

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

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

Это бред. По сути вы дадите нагрузку больше.

<?
include ('5.php'); //в 5пхп $o=2+1;
echo $o.'<br>';
echo memory_get_usage() . "n"; //50632
?>

<?
$o=2+1;
echo $o.'<br>';
echo memory_get_usage() . "n"; //50192
?>

вы можете в магазине сложить всё в один пакет, а можете рассортировать по пакетам, нагрузка только увеличится (время на раскладку + вес пакетов)
другое дело если вы будете из магазина носить небольшие пакеты, т.е. отдельные файлы рега.пхп лк.пхп, но защитить большой пакет легче, чем маленький, смысл у этой функции только в подключении однотипных файлов например конфиг.пхп

а лучше не мучайтесь этой фигней, пишите как удобнее вам, намного больше уходит ввод новых переменных

Посмотрите мою статью с исчерпывающим исследованием по теме вопроса.

Сравнение производительности автозагрузки и объединения классов в один файл

Источник

Вам также может быть интересно:

Использование вложенных маршрутов в React Router — javascript reactjs react-router
Вопрос: Для организации маршрутов в приложении использую React Router. <Route path="/" component={...}> <IndexRoute component={...}/> <Route path="user/:userId" component={...}> ...
Как с помощью Retrofit 2.0 отправить данные в JSON на сервер и получить ответ? — java android retrofit
Вопрос: Только начал читать про Retrofit 2.0 до этого использовал HttpURLConnection. Как я работаю с HttpURLConnection, формирую Json перевожу его в byte, ставлю header в ...
Не приходят push уведомления. FCM — android firebase android-notification
Вопрос: Появилась необходимость реализовать push уведомления. Прописал в манифесте сервис: <service android:name=".MyFirebaseMessagingService"> <intent-filter> ...
Принцип браузерной игры в линукс терминале — java linux terminal
Вопрос: Наткнулся на Java библиотеку CHARVA. И хотел бы уточнить у знающих людей, возможно ли на основе данной библиотеки сделать программу по принципу браузерной игры, но ...
Мерцание заблокированного экрана при выключенной подсветке в Debian 8 Gnome 3 — linux debian экран
Вопрос: На ноутбуке с Debian 8 Jessie и Gnome 3 имеется следующая проблема. При выключенном заблокированном экране сквозь него можно наблюдать, как весь экран становится белым, ...
Создание WCF клиента на готовый SOAP web сервер — c# wcf
Вопрос: Доброго времени суток. Появилась задача опрашивать web сервер с клиента на котором планируется написать WCF клиентскую часть. Информации про сервер очень мало (не знаю платформу ...
Безопасно ли удалить файл логов general_log.txt? — mysql
Вопрос: При выполнении запроса со вставкой данных большого объёма SQLyog начал вылетать с ошибкой: not enough memory application terminated В связи с этим я решила ...
Callback функции создания таблицы mysql в nodejs — mysql node.js callback
Вопрос: Есть функция, которая при запуске создает базу даных, function showDb() { pool.query("show databases like 'bt' ",function (err, ...
Как создать Adapter с неограниченным количеством строк и с неограниченным разным количеством столбцов в каждой строке — java android
Вопрос: Как создать Adapter с неограниченным количеством строк и с неограниченным разным количеством столбцов в каждой строке Автор вопроса: Salut Amigo Источник
Не могу передать байтовый массив в контроллер — c# asp.net-mvc entity-framework
Вопрос: У меня изображения храняться в бд в формате байтового массива, через форич отлично все выводит, но когда я хочу открыть страницу для работы с ...
proguard release error — java android mvp
Вопрос: Включил в проекте proguard, apk собирается, все хорошо, но приложение не работает) Proguard-rules.pro -keepattributes InnerClasses -keepattributes EnclosingMethod -keepattributes *Annotation* -dontoptimize # Keep Butterknife -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep ...
Не отрабатывает page:update — javascript ruby-on-rails
Вопрос: Есть мой учебный проект на ruby. Делаю редактирование объектов с помощью JS. Сейчас работает так: Редактирую первый раз - всё нормально. Не обновляя страницу, ...
Как найти определенный символ в строке и удалить значение после него (и вместе с ним) Jquery — javascript html jquery
Вопрос: Здравствуйте, есть определенный набор строк, типа "L / Красный / 12345", как можно на странице найти их, и вырезать из них все что находится ...
Почему не работает wildcard module declaration? — typescript
Вопрос: Почему не работает такой способ декларации: declare module "*!text" {} ? Цель - использовать контент файла в переменной: import layout = require("/js/views/layouts/wnd.html!text"); или так: import layout from "/js/views/layouts/wnd.html!text"; Если ...
Как прервать 3rd-party код? — c# многопоточность .net-core
Вопрос: Есть 3rd-party код из библиотеки который "зависает" в ожидании где-то в работе с сетью. CancellationToken поддержки нет, таймаутов нет. Запускаю я его через: Task.Run(() => ...

Оставьте ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *