Zend Platform 1.1
Zend Technologies, zend.com
Cost: One CPU per year, US$999 (NZ1,470); two or more CPUs per year, $1,495
Platforms: Server: Linux, Mac OS X, Solaris 6, FreeBSD 4, 5.0–5.2 running Apache 1.3, Apache 2.0, Zeus; client: IE 5.5, Netscape 7, Mozilla 1.7, Firefox
Bottom line: Zend Platform is a well-designed package that helps manage a PHP installation by flagging and debugging problem pages. It can also accelerate the server using selective compilation and caching. Flexible alert criteria allow you to detect a wide range of problems, including the slow execution of a page or function. Deeper diagnostics and more runtime profiling would be nice additions.
During the past few years, PHP has grown to be more than just a simple tag-centered scripting language for neophyte web designers who want to do a bit of programming. A quick survey of the breadth and depth of the open-source projects using the language shows that people can and will build enterprise-grade applications with the embedded tags. Now Zend Technologies, the company steering the language, is rolling out more tools to support the enterprise-grade servers that run these more serious applications.
The latest offering, Zend Platform, brings sophisticated monitoring to system administrators who want to ensure that all clients get their data. The tool tracks the performance of all scripts and integrates with Zend's accelerator to offer faster performance through script compilation and caching. If the server fails to provide the right level of service, the tool can fire up Zend's development studio for direct debugging.
The Platform begins at a subscription of US$995 (NZ$1,470) for one year. Zend continues to distribute the basic PHP toolkit for free as an open-source package that is practically bundled with the omnipresent Apache, a tie-in that encourages people to experiment with the language. The fees from add-on products such as the Zend Platform support the general development of the language, a process that is adding more sophisticated object-oriented features and making PHP more and more like JavaServer Pages.
I tested the system by installing it on a Macintosh running several of the common PHP applications such as PHP-Nuke on the built-in version of PHP. The process couldn't have been simpler. After unpacking the system and running the installer scripts, the Zend Platform started tracking all pages served by the system. There was no recompilation of the scripts or reintegration; it just started working, and the information was immediately available through the web server.
It was a bit harder to get the Platform to communicate with the debugger in the Zend Development Environment, but I was able to solve it with some help from Zend. The debugger software was well-designed with some nice tools for testing these connections when specified, but the tools for connecting the Platform with the IDE were not always sufficient.
The pulse of PHP
The first thing a user sees when firing up Zend Platform is a dashboard that lists scripts that are not performing quickly. The five worst offenders are listed with a graph highlighting the overall response time of the server. If you want to understand what is going wrong, you can click on one of these scripts and a page opens with all the information that triggers the call. You can look at any cookies, parameters, or files in the HTTP request that were causing the trouble.
If you want to watch what happens when the server handles a troublesome HTTP request, you can either send it directly to the server again or pass it to the Zend Development Environment, an IDE with a built-in debugger and profiler sold separately. Both techniques can pinpoint slow scripts or problems with a website.
The Zend Platform covers a wide range of problems, and it includes a good, basic mechanism for programming alerts when trouble arises. It sends email to an address or posts a report to a URL when it identifies a slow script, an error, or a high load on a server. Alerts can even be triggered by the slow execution of a particular PHP function, something that allows you to pinpoint sluggish parts of the system such as databases.
Zend's monitoring is good, but it could be deeper. You can identify problem scripts, but it's not simple to dig through all the instances that are causing trouble. You can get the cookies and parameters from the latest HTTP request to trigger an alert, but you can't dig through the cookies and parameters that caused an earlier occurrence. A deeper display with the parameters that trigger all slow pages would be nice.
It might be even nicer to have more runtime profiling. Although you can re-execute the problematic HTTP request in the development studio, it's not the same as getting profiling information when the problem occurs. Intermittent problems such as overloaded databases are usually fine when you return to resimulate the problem. Some of the most sophisticated Java survey tools offer this feature, albeit at a significantly higher price.
PHP turns pro
Monitoring is only one of the jobs of Zend Platform, a cornucopia sort of tool for the various enhancements that Zend sells. If you want to optimise the performance of web pages and track the effect the optimiser has on performance, you can click through to a page that summarises the speed gains from compiling or caching a script. My numbers seemed to range between zero and 50%, and the overall gain the system calculated was 24%. If necessary, you can turn compiling and caching off, although I can't think of many practical reasons to do this.
The Platform also includes the Java Bridge, a tool for speeding up the integration of PHP with Java. The system fires up one JVM and leaves it running so each PHP script won't need to wait for a JVM to start up.
The Zend Platform will certainly be a big leap forward for PHP designers. The serious enterprise developers have always clustered around Java. As a result, the tools available for Java have always been stronger and more sophisticated. Zend's instrumentation will give PHP developers a much-needed way to catch up. It offers a good start at supporting a serious enterprise operation built around PHP.