zend server

Zend Server Community Edition

Matching Correct Version

From the stable version PHP 5.2.6, I decided to play around with the latest versions of PHP, Apache and MySQL. Some PECL components such as APC and Printer are taken into considerations since one of our project uses Windows as the server.

It has been tricky to which version of Apache should match PHP and which version of PHP should match the PECL version especially the printer.dll since binary downloads are hard to find. I even played around with PHP non-thread safe version but I immediately disregard the idea because it uses PHP as CLI.

While searching for a better server architecture, I stumbled upon the Zend’s website.

Zend Server CE

Zend Server Community Edition is a fast and reliable PHP application stack. It is completely free, and you can use it in development, testing and production. It has Zend Optimizer and data caching API. IT also has Zend Debugger.

zend-ce

Since I’m deploying in Windows, I’ll be talking about Windows specific configurations here. Get the installer here.

To test the Zend Server CE, I setup a virtual server on Windows XP Professional SP2 with 256 memory, in short, a slow virtual machine. This is to test its functionality on a slow machine.

After installing, I grab the latest MySQL 5.1, the stable release for production at the time of writing. I noticed a difference on the output of mysqldump. It has some SQL statements that are not compatible with lower versions especially MySQL 5.0. The line:

USING BTREE

causes the error when I attempt to restore the mysqldump from 5.1 to a 5.0 server. It has something to do with the INDEX. Removing that line will work on 5.0 but for large sql dump, that is too difficult in a Windows machine.

After testing the functionality, I can say that with default settings, it performs faster than the server on a real machine (not virtual machine).

It lacks the most important component that we need in our project. The printing functionality. Since php_printer.dll is under PECL project, I need to find a working php_printer.dll that will work on my PHP version which is 5.2.10 as what Zend Server CE have on my installation right now.

I found a working binary download here.
Its filename is: php_printer-cvs-20081215-5.2.8-nts-Win32.zip.

I wonder if these php_printer.dll which is version 5.2.8.8 and also a non-thread safe version will work on my current installation. Surprisingly, it works. It happily prints the barcode.

Benchmark

I have benchmarked the performance of our two servers. This is a very inaccurate benchmark which will only show so don’t use the result as reference sort of. Below are the server specification.

Virtual Machine:

Windows XP Professional SP2
256 Memory (from virtual machine)
Zend Server CE with Zend Optimizer, Data caching and Zend Debugger enabled
MySQL 5.1 using InnoDB configured to have 640M memory pool.
Other configurations is not listed

Test Server

Windows XP Professional SP2
2G Memory
PHP 5.2.6 with APC
MySQL 5.0 using InnoDB, configured as development machine only
This machine houses the virtual machine but when the benchmark is run, the virtual machine is turned off.

The result below {Machine: request_per_second}

Virtual Machine with Zend Server CE: 47.76, 56.44
Virtual Machine with Zend Server CE (Optimizer and Caching disabled): 12.04, 12.26
Test Server with PHP 5.2.6 and APC: 22.72, 22.68

As you can see, the virtual machine using the Zend Server CE is much faster than the real machine running on a beefy specs. However, the benchmark seems slow because the test server is not optimized for InnoDB.

However, since Zend Server CE is already a full PHP stack with lot of management tools, I preferred it over the native PHP + Apache stack.

And again, the benchmark does not show the full performance of the Test Server which could also show a good performance when configured properly.

Leave a reply

Your email address will not be published. Required fields are marked *