Вопрос может побудить некоторых людей сказать окончательное ДА или НЕТ почти сразу, но, пожалуйста, прочитайте …
У меня есть простой веб-сайт, на котором есть 30 страниц php (каждый из них имеет код php-сервера + HTML / CSS и т. Д.). Нет сложной иерархии, ничего. Всего 30 страниц.
У меня также есть набор чисто фоновых файлов php – те, которые имеют код для сохранения материала в базе данных, делают аутентификацию, отправляют электронные письма, обрабатывают заказы и т. П. Они будут повторно использоваться этими 30 страницами контента.
У меня есть главный файл php, на который я отправляю параметр. Это указывает, какой из этих 30 файлов необходим, и он включает соответствующую страницу контента. Но для каждого из них может потребоваться переменное количество встроенных файлов. Например, одна страница содержимого может не требовать от внешнего сервера, в то время как другому может понадобиться код базы данных, в то время как для чего-то еще может понадобиться почтовый клиент, база данных и код аутентификации и т. Д. …
Я предполагаю, что какая бы серверная страница не требовалась, может быть включена в соответствующую страницу контента, но одно небольшое изменение в пути, и мне приходится редактировать десятки файлов. Будет слишком громоздким, чтобы проверить, какая страница контента запрашивается (тип файла с ключом), и включать соответствующие внутренние файлы в основной файл php. Опять же, я должен внести много изменений, если один путь изменится.
Будучи ленивым, я включил ВСЕ архивные файлы в главный файл, чтобы ни одна страница контента не могла запросить то, что не включено.
Первый вопрос – это хорошая практика? если это делается кем угодно вообще.
Во-вторых, будет ли проблема с производительностью или какой-либо проблемой из-за меня, включая все исходные файлы, независимо от того, нужны они?
РЕДАКТИРОВАТЬ
Веб-сайт получает от 3000 до 4000 посещений в день.
Вы должны ориентироваться. Время выполнения одной и той же страницы с разными. Но я думаю, что это не будет иметь большого значения с 30 файлами.
Но вы можете сэкономить время и просто включить APC в php.ini (это расширение PECL, поэтому вам нужно его установить ). Он будет кэшировать проанализированный контент ваших файлов, что значительно ускорит процесс.
Кстати: нет ничего плохого в лень, это даже достоинство 😉
Если ваш сайт объектно-ориентирован, я бы рекомендовал использовать автозагрузку ( http://php.net/manual/en/language.oop5.autoload.php ).
Это использует магический метод (__autoload) для поиска класса при необходимости (он ленив, как и вы!), Поэтому, если конкретной странице не нужны все классы, она не обязательно их получает!
Опять же, это зависит от того, объективна она или нет …
Это замедлит работу вашего сайта, хотя, вероятно, не будет заметной суммы. Однако это не похоже на здоровый способ организовать ваше приложение; Я бы передумал. Попробуйте отделить логику приложения (например, большую часть серверного кода) от уровня представления (например, HTML / CSS).
это не плохая практика, если файлы маленькие и содержат только определение и настройки. если они действительно запускают код или чрезвычайно велики, это вызовет проблему с производительностью. теперь – если на вашем сайте 3 посетителей в час – кто заботится, если у вас 30000 … это еще одна проблема, и вам нужно больше работать, чтобы свести это к минимуму.
Вы можете перенести некоторые из недостатков компиляции PHP-кода с помощью XCache . Этот PHP-модуль будет кэшировать PHP-код операции, который сокращает время компиляции и производительность.
Учитывая размер вашего сайта; если вы не заметили замедление, зачем пытаться его исправить?
Когда дело доходит до крупных сайтов, первое, что вам нужно сделать, это установить APC. Даже несмотря на то, что ваш текущий способ включения файлов может не принести столько же выгоды от APC, сколько возможно, APC по-прежнему будет делать потрясающую работу, ускоряющую работу.
Если скорость ответа по-прежнему проблематична, вам следует рассмотреть возможность включения всех ваших файлов. APC будет хранить кэшированную версию ваших исходных файлов в памяти, но может делать это только в том случае, если нет условных включений .
Только тогда, когда ваше приложение PHP имеет размер, при котором исчерпание памяти является большим риском (обратите внимание, что для большинства крупных веб-сайтов память не является узким местом), вы можете условно включить части своего приложения.
Расмус Лердорф (человек, стоящий за PHP) согласен: http://pooteeweet.org/blog/538
Как говорили другие, это не должно мешать многим, но это не «идеальный».
Если основной проблемой является то, что вы слишком ленивы, чтобы менять пути для всех включенных файлов (если в будущем этот путь должен быть обновлен). Затем вы можете использовать константу для определения пути в своем основном файле и использовать константу в любое время, когда вам нужно включить / потребовать файл.
define('PATH_TO_FILES', '/var/www/html/mysite/includes/go/in/here/'); require_once PATH_TO_FILES.'database.php'; require_once PATH_TO_FILES.'sessions.php'; require_once PATH_TO_FILES.'otherstuff.php';
Таким образом, если путь изменяется, вам нужно только изменить одну строку кода.
Я живу ", как можно меньше, насколько это необходимо", поэтому я обычно просто включаю в себя конфигурацию и сеансовую обработку для всего, а затем каждая страница включает в себя только то, что им нужно, с использованием включенного пути, определенного в config, поэтому для изменения пути вам все равно нужно изменить один файл.
Если вы включите все, замедление не будет заметным, пока вы не получите много постраничных страниц (несколько раз в секунду), поэтому в вашем случае просто все будет в порядке.
Это действительно замедлит ваш сайт. Большинство из-за относительной медленной загрузки и обработки PHP. Чем больше кода вы хотите включить, тем медленнее будет приложение.