Приветствуем наших читателей. Новый релиз РНР, 5.2.6 прошел достаточно незамеченным, в частности, наверное, потому, что несет в себе только исправления ошибок и некоторые обновления включенных в состав компонент. Люди же привыкли ждать более существенных обновлений, о которых можно поговорить, а таким обещает быть следующий, 5.3 дистрибутив. Ну а у нас сегодня есть другой повод для разговора и обсуждения - выход наконец первой альфа-версии набора компонент ezComponents 2008.1. Это пока только первая пробная версия, но ее уже стоит загрузить и начать изучать. А вот что там изменилось и добавилось - об этом сейчас и поговорим. Официальный ChangeLog здесь.


Для меня, наверное, самое главное изменение - это появление в составе пакета компонента для полнотекстового поиска (он традиционно Search назван, без излишеств). Судя по документации, это РНР порт популярного и мощного Java-пакета Solr, который, в свою очередь подпроект Apache Lucene. Это корпоративного уровня поисковый сервер (в смысле - индексатор данных и сам поисковик), предоставляющий различные внешние интерфейсы - JSON/HTTP/XML, а также расширенные возможности поиска - подсветка найденных фраз, кеширование и репликация, фасеточный поиск и многое другое. Аналогичные порты есть и в других фреймворках, например, Zend Framework также использует PHP-версию Apache Lucene.

А вот реализация в ezComponents интересна и отличается от остальных. Дело в том, что собственно, сам поиск и индексация, на самом деле, в компоненте не реализованы. Он предоставляет только интерфейсы поисковые и индексатора, в на заднем плане они реализуются через внешний сервер, например, тот же Solr/Lucene, которые запущены на том же или отдельном сервере, доступ к которому идет через TCP-соединение. В будущем обещается реализация и других обработчиков, например, заявлена поддержка веб-поисковиков Google и Yahoo!, думаю, что реализовать это самое для, к примеру, Yandex-а также возможно.

Компонент сам по себе достаточно сложный, я бы наверное назвал его даже самым сложным из всех компонент, так что заслуживает на отдельную статью. Странно, правда, что не реализован сам поисковик на РНР, это задача вполне решаемая и реализованная в других фреймворках. Хотя и такой подход имеет свои плюсы и часто он даже лучше - мы можем развернуть поисковик один на выделенном сервер в родном для него окружении, а все сайты будут взаимодействовать с ним через свои интерфейсы.

Ну а теперь немного о других изменениях.

Модуль Archive теперь может работать с архивными файлами в режиме "только чтение". Модуль аутенфикации обновился, исправлены ошибки в работе компонента OpenID и LDAP.

Достаточно существенно обновлен отличный модуль кеширования, который позволят работать с несколькими видами кешей, в том числе файловым, APC и Memcached. Теперь добавлена возможность строить иерархические кеши, что может быть полезным для создания гибкой и сложнозависимой системы кеширования в нагруженных проектах.

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

Очень сильно обновился модуль для работы с RSS-лентами, теперь полностью можно создавать и оперировать лентами в любом формате - RSS1 (0.91 и 0.92 версии), RSS 2, ATOM. Это очень радует, так как теперь можно достаточно легко создавать различные серверные приложения для работы с RSS. Ну или просто организовать ленты на вашем сайте.

Модуль для построения графиков также подвергся значительным изменениям, но здесь рассказать что-то сложно, я еще с ним никогда не работал. заявлена поддержка SVG, использование библиотеки Cairo (мощная библиотека для работы с двухмерной векторной графикой).

Остальные компоненты обновлены в основном за счет исправления ошибок и небольшие дополнения в функциональности. Однако уже описанных выше новшеств хватает, чтобы присмотреться повнимательнее в библиотеке и начать использовать ее в своих проектах.