Создал пустой проект ZF. Добавил в конец index.php код типа var_dump(get_required_files()) и все выведенные файлы собрал в один. Удалил в коде все require_once. И заменил в index.php require_once «Zend/Application.php» на свой файлик.
Первоначальные замеры (с множеством файлов) дали время запуска 137мс, после подключения одного файла — 39мс. То есть на лицо повышение производительности в 3 раза.
да, это кажется невероятным увеличением производительности (В ТРИ РАЗА!!!11), но если задуматься о том, что не одним запуском голого helloworld едины, то возникают вопросы… Так, например, средненький sql запрос сведет всю разницу на нет.
Для больших проектов оптимизация нужна на совершенно иных уровнях, нежели все файлы в один конкатенировать…
Предполагается, что программист достаточно хорошо подготовлен, и умеет писать нормальные запросы.
Предполагается, что запросы уже оптимизированы, и счет идет на десятки миллисекунд.
В этом случае объединение в один файл дает хороший прирост (особенно в больших и сложных проектах).
Вообще-то, это увеличение производительности на голом месте, без каких бы то ни было усилий. Кстати, с усложнением проекта, количество файлов, которые необходимо подключать растет пропорционально сложности проекта. Так что такой вид оптимизации нельзя упускать из виду.
Ну а про запросы вам ответили выше.
что то получается следующее:
— ставлю «выбрать все»
— кнопка «Загрузить»
— require_once 'Zend.compiled.php' и:
Fatal error: Class 'PHPUnit_Framework_Constraint' not found in ...library\Zend.compiled.php on line 2055
Там для этого справа от названия каждой ветки написано all/none (т.е отметить/снять отметку со всех вложенных компонентов)
Похоже, как-то непонятно я это оформил
Пытался когда-то сделать класс, который динамически собирает проект в 1 файл, если он ещё не собран, но наткнулся на кучу подводных камней(типа инклюд файла в зависимости от значения переменной). Не знаю как вам удалось их обойти, но работа достойна похвал. Спасибо.
А, ну вообщим-то да, в этом случае можно и так. Я же хотел, чтобы подключались только востребованные классы. Возможно получится при помощи __autoload, как говорит artch
Дело в том, что PHP_Unit — отдельный продукт, который может использоваться, а может и не использоваться в проекте. В ZF он не входит.
Вот здесь написано, как его заводить
Напишу-ка я об этом на сайте
оставлять как есть :) Объединенный файл просто инклудится в самом начале, а оригинал фреймворка остается на своем месте. Это, кстати, обезопасит сайт от фейла в случае, если в сборке не окажется нужного класса.
Для неphpшных файлов вообще ничего не меняется.
Извиняюсь, я может немного не понял. Все инклюды вырезаются ведь из единого класса? Как наличие стандартной (не запакованной библиотеки ZF) может обезопасить от отсутствия нужного класса?
сайт не переваривает файл. Сообщает что памяти нехватило. Изменение настроек пхп не дает ничего. Пхп не перваривает такой файл :( Или нехватает памяти или все падает
было бы круто еще сохранять конфиги. например сделал сборку — а завтра еще адаптер другой базы понадобилось добавить или другую компоненту — приходится снова по всем веткам проходить. а так загрузил свой конфиг и исправил
Сервис для сборки Zend Framework в один файл