@frontendo

Как происходит загрузка классов в php фреймворках?

Уважаемые знатоки, подскажите новичку. Я начал осваивать laravel, смотрю, в нем 7000 файлов. Хочу разобраться в принципах работы. Вот когда приходит запрос, происходит регистрация различных классов, потом запускается собственно наш код, в котором используются добрая половина функционала фрейма. И вот у меня возникает такой вопрос. Получается, при каждом запросе пользователя скрипт обращается к диску в моем случае за 3000 файлами каких-либо классов?
  • Вопрос задан
  • 220 просмотров
Решения вопроса 2
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
И вот у меня возникает такой вопрос. Получается, при каждом запросе пользователя скрипт обращается к диску в моем случае за 3000 файлами каких-либо классов?
Не знаю как на серверных версиях Windows, но на "домашних" судя по всему, именно так и есть (с учётом разницы производительности, обычно не в пользу Windows). Linux же умеет кэшировать в памяти любые файлы, к которым вы обращаетесь, будь это .php или .jpg - не имеет особого значения.

P.S. А с учётом того, что файлов 3тыс. а занимают они 10-30Мб (эти 3тыс. файлов), думаю гораздо продуктивнее хранить их в оперативной памяти, чем 3тыс. раз дёргать жесткий диски, особенно если это НЕ SSD-диск. Что собственно ОС обычно и делает :)
Ответ написан
Не все. Сейчас ради интереса глянул проект, который делаю - он подключает 466 файлов, начиная с Index.php. Пoсле запуска artisan optimize количество файлов уменьшилось почти вдвое (laravel-recipes.com/recipes/60/optimizing-the-fram... - почитайте тут. Плюс в документации посмотрите про кеширование роутов и конфиг файлов через artisan).

Плюс если вы не используете какую-то модель или контроллер для генерации текущей страницы, они также не будут подключены. По сервис-провайдерам боюсь соврать, но возможно они тоже не подключаются, до момента непосредственного вызова, если они отложенные (https://laravel.com/docs/5.1/providers#deferred-pr...

А вообще вопрос с файлами решается наверное на всех хостингах использованием кешеров (https://ru.wikipedia.org/wiki/%D0%90%D0%BA%D1%81%D..., файлы не просто грузятся в память, а еще и компилируются для ускорения запуска.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@WQP
1. Подключать их не долго
2. Кешируется всё

Это тоже будет полезно php.net/manual/ru/language.oop5.autoload.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы