Хочется поделиться некоторыми впечатлениями о некоторых продуктах Zend ltd. Очень радует что теперь они не только The PHP Company, но и производители сопутствующих товаров. Раньше я как и, возможно, большая часть сидел на Zend Studio 5.5, так как она с успехом справлялась со всем тем что от нее требовалось, но задачи в ней решались по большей части ориентированные на одного разработчика, несмотря на «дружный коллектив». В принципе, ничего кроме codefolding и подсветки синтаксиса не требовалось, весьма полезны были еще всяческие шаблоны, например foreach и информация о функциях / аргументах и т. п. полученная из DocBlock, а так же удобное их создание. SVN использовался как backup и из IDE не как не взаимодействовал, но недавно перешел на Zend Studion 7.0, чему с каждым днем все больше рад, да есть куча минусов, да иногда висит из-за анализа проектов, непривычные горячие клавиши и т. п. но это все настраивается.
Сразу хочется отметить если вам не нужно комплексное решение всех проблем — пользуйтесь тем редактором который вам по душе, если вам хочется применить какие-либо новые методы разработки — смело ставьте Zend Studio 7.0 и время от времени в ней экспериментируйте, в результате через некоторое время это даст свои плоды.
Один из минусов — не очень удобно работать при небольшом разрешении на не широкоэкранном мониторе, но эта проблема решается максимизацией активной панели (Ctrl + M). Следующая проблема с которой вы возможно столкнетесь это виззарды, сначала может быть непонятно какой визард для чего требуется, но разобравшись с ними вы сможете ускорить процесс разработки, еще для этих же целей очень хорошо послужат те же шаблоны.
Теперь то, о чем все таки хотелось сказать — это реальная интеграция IDE и сервера из коробки (php + web сервер + базаданных). Не нужно править конфиги чтобы что-то поправить в настройках, конечно сторонние расширения нужно будет подключать вручную, но большинство базовых операций удобно делать через веб интерфейс. Так чже вместе с Zend Server ставится Zend Controller которым иногда можно поиграться.
Для того чтобы интегрировать Zend Server и Zend Studio вам потребуется сначала запустить Server, потом студию и в ней во всплывающем окне согласиться с интеграцией и ввести пароль (это в случае если у вас Zend Server стоит локально). После этого сразу можно приступать к более конструктивной отладке, трассировке и профилированию. Для примера пара изображений приложения на Zend Framework (кстати соответствующая перспектива отображает панель MVC в которой отображаются аккуратно модели / представления / контроллеры)
На этой иллюстрации видно что подготовка (bootstraping) приложения занимает 46% времени работы, а это в основном разбор конфигурационных файлов и создание соответствующи объектов, которые раз за разом одни и те же… ощущается реальная нехватка хеширования всего этого дела, правда в примере использованы почти все ресурсы доступные по умолчанию, их там штук 11. «Полезные действия» — читай диспетчеризация занимает всего 27% времени, что выглядит просто отвратительно, т. е. 3/4 времени исполнения тратится на одни и те же однообразные в большинстве случаев действия.
На следующем изображении представлен тот же отчет, только с другой вкладки в виде круговой диаграммы:
Отсюда мы с разу видим, что новый загрузчик хоть и очень удобен, но является первой жертвой на отстрел. Еще в перспективе отладки есть панель с консолью, которая тоже поможет вам найти конфликтные места, в моем случае — загрузчик пытается загрузить ресурсы и помощники вида из пользовательских путей, а не /library/Zend, плюс отчеты по обращениям к файлам — кол-во затраченного времени, обработанных строк, пропущенных строк и всего строк кода в файле, посмотрите сами — обещаю будет интересно. Профилирован был URL. Попробовать какие-то другие возможности пока нет времени, нов будущем обязательно что-нибудь будет еще, возможно поподробнее рассмотрим работу с Zend Debuger.
P. S.
На первой иллюстрации с Zend Controller — отображенно количество запросов в секунду при обращение по тому же URL что и при профилировании.
Если кто-либо устанавливал на одном хосте PHP с одновременной поддержкой xDebug и Zend Debugger и испытывал какие-либо затруднения, и решил их — расскажите про это в комментариях, если найдете время.
Нужно будет попробовать обернуть Zend_Application стандартным кешем для объек
Использование Zend Studio совместно с Zend Server позволило оптимизировать приложение за час (с начала написания статьи — создание скриншотов, набор текста, форматирование, пара звонков по мобильному ) в среднем на четверть: время выполнения сократилось на 24%, количество подключаемых файлов — на 34%. Безусловно, могут существовать какие-то тонкие моменты или потенциальные проблемы, но эта проблема покрывается использованием модульного тестирования.
При подробном рассмотрении выяснилось что все кешируется намертво, что в принципе и подозревалось, но таким же путем можно все-таки оптимизировать процесс подготовки приложения, расширив класс Zend_Application и добавив необходимую логику.
А теперь правильный вывод — ночью нужно спать.
Сразу хочется отметить если вам не нужно комплексное решение всех проблем — пользуйтесь тем редактором который вам по душе, если вам хочется применить какие-либо новые методы разработки — смело ставьте Zend Studio 7.0 и время от времени в ней экспериментируйте, в результате через некоторое время это даст свои плоды.
Один из минусов — не очень удобно работать при небольшом разрешении на не широкоэкранном мониторе, но эта проблема решается максимизацией активной панели (Ctrl + M). Следующая проблема с которой вы возможно столкнетесь это виззарды, сначала может быть непонятно какой визард для чего требуется, но разобравшись с ними вы сможете ускорить процесс разработки, еще для этих же целей очень хорошо послужат те же шаблоны.
Теперь то, о чем все таки хотелось сказать — это реальная интеграция IDE и сервера из коробки (php + web сервер + базаданных). Не нужно править конфиги чтобы что-то поправить в настройках, конечно сторонние расширения нужно будет подключать вручную, но большинство базовых операций удобно делать через веб интерфейс. Так чже вместе с Zend Server ставится Zend Controller которым иногда можно поиграться.
Для того чтобы интегрировать Zend Server и Zend Studio вам потребуется сначала запустить Server, потом студию и в ней во всплывающем окне согласиться с интеграцией и ввести пароль (это в случае если у вас Zend Server стоит локально). После этого сразу можно приступать к более конструктивной отладке, трассировке и профилированию. Для примера пара изображений приложения на Zend Framework (кстати соответствующая перспектива отображает панель MVC в которой отображаются аккуратно модели / представления / контроллеры)
На этой иллюстрации видно что подготовка (bootstraping) приложения занимает 46% времени работы, а это в основном разбор конфигурационных файлов и создание соответствующи объектов, которые раз за разом одни и те же… ощущается реальная нехватка хеширования всего этого дела, правда в примере использованы почти все ресурсы доступные по умолчанию, их там штук 11. «Полезные действия» — читай диспетчеризация занимает всего 27% времени, что выглядит просто отвратительно, т. е. 3/4 времени исполнения тратится на одни и те же однообразные в большинстве случаев действия.
На следующем изображении представлен тот же отчет, только с другой вкладки в виде круговой диаграммы:
Отсюда мы с разу видим, что новый загрузчик хоть и очень удобен, но является первой жертвой на отстрел. Еще в перспективе отладки есть панель с консолью, которая тоже поможет вам найти конфликтные места, в моем случае — загрузчик пытается загрузить ресурсы и помощники вида из пользовательских путей, а не /library/Zend, плюс отчеты по обращениям к файлам — кол-во затраченного времени, обработанных строк, пропущенных строк и всего строк кода в файле, посмотрите сами — обещаю будет интересно. Профилирован был URL. Попробовать какие-то другие возможности пока нет времени, нов будущем обязательно что-нибудь будет еще, возможно поподробнее рассмотрим работу с Zend Debuger.
P. S.
На первой иллюстрации с Zend Controller — отображенно количество запросов в секунду при обращение по тому же URL что и при профилировании.
Если кто-либо устанавливал на одном хосте PHP с одновременной поддержкой xDebug и Zend Debugger и испытывал какие-либо затруднения, и решил их — расскажите про это в комментариях, если найдете время.
Нужно будет попробовать обернуть Zend_Application стандартным кешем для объек
До подключения Zend_Cache
Profile URL: | example.com |
Query: | debug_host=192.168.1.195%2C127.0.0.1&debug_fastfile=1 |
Path: | C:/Program Files/Zend/Apache2/htdocs/example.com/htdocs/index.php |
Total Request Time: | 839.07 |
Number of Files: | 136 |
Profile Date: | Tue Jul 21 00:45:51 MSD 2009 |
/**
* index.php ДО подключения стандартного кеша к Zend_Application
* Autoloader, константы и старт сессий находится выше
* и не приводится тут
*
*/
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR .'application.ini'
);
$application->bootstrap()->run();
* This source code was highlighted with Source Code Highlighter.
После подключения Zend_Cache
Profile URL: | example.com |
Query: | debug_host=192.168.1.195%2C127.0.0.1&debug_fastfile=1 |
Path: | C:/Program Files/Zend/Apache2/htdocs/emample.com/htdocs/index.php |
Total Request Time: | 636.28 |
Number of Files: | 89 |
Profile Date: | Tue Jul 21 00:33:55 MSD 2009 |
/**
* index.php ПОСЛЕ подключения стандартного кеша к Zend_Application
* Autoloader, константы и старт сессий находится выше
* и не приводится тут
*
*/
$frontendOptions = array(
'cached_entity' => new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR .'application.ini'
)
);
$backendOptions = array(
'cache_dir' => APPLICATION_CACHE,
'hashed_directory_level' => 2
);
$cache = Zend_Cache::factory('Class', 'File', $frontendOptions, $backendOptions);
$cache->bootstrap();
$cache->run();
/**
* ВАЖНО: При использовании разименованных методов т. е.:
* $cache->bootstrap()->run();
*
* Приходил полный П. в виде:
* Debug Error:
* C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Application\Bootstrap\Bootstrap.php
* line 69 - Call to a member function getDefaultModule() on a non-object
*/
* This source code was highlighted with Source Code Highlighter.
Выводы:
Использование Zend Studio совместно с Zend Server позволило оптимизировать приложение за час (с начала написания статьи — создание скриншотов, набор текста, форматирование, пара звонков по мобильному ) в среднем на четверть: время выполнения сократилось на 24%, количество подключаемых файлов — на 34%. Безусловно, могут существовать какие-то тонкие моменты или потенциальные проблемы, но эта проблема покрывается использованием модульного тестирования.
P.P.S.:
При подробном рассмотрении выяснилось что все кешируется намертво, что в принципе и подозревалось, но таким же путем можно все-таки оптимизировать процесс подготовки приложения, расширив класс Zend_Application и добавив необходимую логику.
А теперь правильный вывод — ночью нужно спать.