
The new release of PHP 5.2.6 went quite unnoticed, in particular, probably because it carries only bug fixes and some updates to the components included. People used to wait for more significant updates, which you can talk about, and this promises to be the next, 5.3 distribution. Well, today we have another reason to talk and discuss - finally, the release of the first alpha version of the
ezComponents 2008.1 component set. This is still only the first trial version, but you should download it and start exploring. But what has changed there and added - let's talk about it now. The official
ChangeLog is here .
For me, probably the most important change is the appearance of a component for full-text search as part of a package (it is traditionally called Search, without excesses). Judging by the documentation, this is the PHP port of the popular and powerful
Solr Java package , which, in turn, is the
Apache Lucene subproject. This is an enterprise-level search server (in the sense of the data indexer and the search engine itself), which provides various external interfaces — JSON / HTTP / XML, as well as advanced search capabilities — highlighting the found phrases, caching and replication, faceted search, and much more. Similar ports exist in other frameworks, for example, Zend Framework also uses the PHP version of Apache Lucene.
But the implementation in ezComponents is interesting and different from the rest. The fact is that, in fact, the search and indexing itself, in fact, are not implemented in the component. It provides only the search and indexer interfaces, in the background they are implemented through an external server, for example, the same Solr / Lucene, running on the same or a separate server, which is accessed via a TCP connection. In the future, the implementation of other handlers is also promised, for example, Google and Yahoo! Search engines are declared to be supported. I think it’s possible to implement this for, for example, Yandex, as well.
')
The component itself is quite complicated, I would probably call it even the most complex of all the components, so it deserves a separate article. Strange, however, that the search engine itself on PHP is not implemented, this is a completely solvable task and implemented in other frameworks. Although this approach has its advantages and often it is even better - we can deploy a search engine alone on a dedicated server in its native environment, and all sites will interact with it through their interfaces.
Well, now a little about other changes.
The Archive module can now work with archive files in read-only mode. The authentication module has been updated, errors in the operation of the OpenID and LDAP components have been fixed.
The excellent caching module has been significantly updated, which will allow working with several types of caches, including file caches, APC and Memcached. Now the ability to build hierarchical caches has been added, which can be useful for creating a flexible and complexly dependent caching system in loaded projects.
The module for debugging has also been updated, now you can get a full-fledged backtrace and quickly find errors in the application. Close to this, the message and event log module (EventLog) is supplemented with the ability to intercept all kinds of errors and works with trigger_error ().
The module for working with RSS feeds has been greatly updated, now you can completely create and operate with tapes in any format - RSS1 (0.91 and 0.92 versions), RSS 2, ATOM. This is very good, because now you can easily create various server applications for working with RSS. Well, or just organize the tape on your site.
The module for plotting has also undergone significant changes, but here it is difficult to tell something, I have never worked with it. SVG support declared, use of the Cairo library (a powerful library for working with two-dimensional graphics).
The remaining components are updated mainly due to the correction of errors and small additions to the functionality. However, the innovations already described above are enough to take a closer look at the library and start using it in your projects.