MongoDB and ZendCon at New York PHP

24 October 2011 » MongoDB, New York PHP, PHP, Zend

This month we have a double feature at New York PHP.

PHP on IBM System i consultant Alan Seiden will give us an update on what transpired at last week’s ZendCon.

10gen MongoDB evangelist Steve Francia will provide an overview on using PHP with MongoDB.

RSVP now for the meeting at IBM in midtown Manhattan on Tuesday October 25th or watch online starting at 6:30pm ET.

Use the IBM Cloud to build your PHP apps

14 March 2011 » Cloud, DB2, New York PHP, PHP, Zend, developerWorks

IBM developerWorks just published an article I wrote about using the Development and Test Cloud to create PHP applications.

The tutorial covers some scenarios that make the cloud compelling for PHP developers and then takes the reader through the installation of Zend Server with DB2 on the IBM Cloud.

If the content looks familiar, you may have seen an earlier version in a print copy I handed out at New York PHP (PDF) late last year.

Speaking of the cloud and NYPHP, don’t forget to join us next week to look at an alternative way to use the cloud to develop PHP applications using Amazon and RightScale.

Move from MySQL to DB2 via the Cloud

24 November 2010 » Cloud, DB2, Linux, PHP, Zend, developerWorks

IBM developerWorks has just published the first article in a series that Mark Nusekabel, Yan Li Mu and I wrote about our experience migrating a large PHP and MySQL application to DB2.

In the four part series we look at preparation, switching databases, porting code, and finally deploying the application. This first installment covers the steps to plan and resources to consult when starting a migration project.

Along with the MySQL to DB2 migration Redbook, a key technology supplementing each step in the process is the IBM Smart Business Development and Test Cloud.

If you already have access to the Development and Test pilot, the PHP developer’s guide (PDF) can give you some tips for configuring Zend Server along with DB2 using virtual machines in that cloud.

The article series and the developer’s guide may also be useful to those who have a contract for the GA version of Development and Test.

Another option to evaluate DB2 for a migration is to use the Amazon EC2 AMIs pre-configured with IBM software individually.

Or, if you’re interested in managing several instances or more complex configurations, RightScale and IBM have collaborated (PDF) to bridge the Amazon and IBM clouds.

So, if you’re considering a new relational backend for your application, the developerWorks migration series, the PHP developer’s guide for the IBM cloud, and the images within the Amazon and IBM clouds will give you a new set of tools to make evaluating the move and executing the switchover much easier.

Upcoming WebSphere and PHP book reviews

04 December 2009 » Java, PHP, Web architecture, WebSphere, Writing, Zend

With several vacation days to cash in through the end of 2009, I hope to catch up on some reading and learn more about the latest developments in the two areas where I do most of my work as a Web application developer – Java EE Web applications built on IBM WebSphere and PHP Web applications using various Zend products.

About a month ago I performed a technical pre-publication review of the second edition of the MySQL to DB2 Conversion Guide that was just released this week, but the following books will be covered from an end user point of view, after general availability.

IBM WebSphere eXtreme Scale 6
First up will be IBM WebSphere eXtreme Scale 6 by Anthony Chaves.

Packt Publishing – who have sent me a free review copy – have made “Chapter 7: The DataGrid API” (PDF) available as a free download.

WebSphere eXtreme Scale is an in-memory data grid used to cache objects and improve both performance and scalability in Java EE applications. It’s analogous to memcached.

I’ve read the first chapter so far and am looking forward to diving into the rest shortly, particularly as I continue to tune a high-volume WebSphere application set to launch an update later this month.

Pro IBM WebSphere Application Server 7 Internals
My next review will be a related middleware title, Pro IBM WebSphere Application Server 7 Internals by Colin Renouf. Apress also sent me a review copy of this book, along with the next title.

I’ve read a few chapters so far, and am quite intrigued by how the author has exploited the modular Eclipse (didn’t know that!) underpinnings of WebSphere 7 to produce some interesting system administration plug-ins.

Of most interest to me about this book is that the author is neither an IBMer with access to WebSphere’s source code, nor writing to sell the reader on IBM middleware, but rather a seasoned pro with lots of practical experience getting the most out of WebSphere.

Zend Enterprise PHP Patterns
Finally, I’ll have a look at Zend Enterprise PHP Patterns by John Coggeshall with Morgan Tocker, also from Apress.

Rather than a catalog of architectural, object-oriented software patterns, this book describes several techniques for developing effective and efficient PHP applications using best practices based on Coggeshall’s years at Zend working on several large scale projects for enterprise customers.

I’ve read two of the chapters in this book that are of prime interest to me, “Web Application Performance and Analysis” and “Data-Caching Strategies in PHP.”

The former looks at diagnosing whether an application is CPU, memory, or I/O bound. This server level approach moves beyond profiling PHP code and looking at the hardware itself. Even for applications moving to the Cloud, this should remain extremely relevant.

The latter chapter has much in common with the WebSphere eXtreme Scale product above, so it will be interesting to learn more about the state-of-the-art in both PHP and Java EE Web application performance techniques.

So far so good
Stay tuned for the more complete reviews in the coming month or two. Right now it seems that all three titles are solid additions to any Web application developer’s library, but I’ll hold out my final verdict until I have a chance to evaluate each more thoroughly.

Technology of the day: Zend Server

03 September 2009 » DB2, Linux, MySQL, New York PHP, PHP, Zend

A few months back, Ed Kietlinski introduced us to the new Zend Server at a New York PHP meeting. I’ve since installed it on two of my department’s servers and put together some notes on my experience.

Update: See the comments section for some configuration suggestions from Zend that differ from the steps I followed. Jess also clarifies the difference in caching between the standard and Community Editions.

What is Zend Server?
Zend Server is a packaged version of PHP targeted at businesses that require a supported and tested stack that’s easy to install and maintain.

It also integrates the other Zend products, such as the Zend Framework, Zend Studio for debugging, Zend Caches, Zend Java Bridge, and Zend Guard/Optimizer among others.

Zend offers several variants and licensing models. There’s a Community Edition that’s free but doesn’t include the more advanced features such as caching and monitoring, there are several tiers of production support, and there are half-price development licenses.

In all cases, migration from one version to another is simply a matter of updating your license information in Zend Server’s console.

Why it interests me
Zend Server hits a sweet spot for my team, where we run only one each of development and production LAMP servers.

We don’t cluster nor do we require a job queue for our PHP applications, so the Zend Platform Enterprise Solution doesn’t fit our needs (See this comparison table).

Of course, we use plenty of WebSphere and Java for our sponsor facing applications hosted in advanced data centers that have different functional and non-functional requirements.

However, our internal department tools are supported by hybrid front-end/server-side developers that can learn and get up and productive on PHP quickly, rather than needing to know or learn Java in the same ramp up period.

In the cases where we require queuing or clustering, we look to WebSphere Application Server, rather than Zend Platform Enterprise Edition, as we do to run our Restlet/Spring Integration pseudo-ESB that integrates many of our other internal tools.

The primary attraction of Zend Server for these department servers is that it can be used as an RPM-based system that bundles the latest stable version of PHP with all the extensions that we need, including the DB2 and MySQL drivers, curl, libxml and mbstring.

Our full-time system administrator has long had to maintain custom compiled versions of PHP and Apache, but we want to move to an automated, package-managed way of doing things as he increases the volume of non-sysadmin work he has taken on.

The RPMs from CentOS repositories are traditionally a few PHP versions behind and aren’t patched frequently enough to fully rely on the operating system’s default package management system.

As I’m writing this, the most recent RPM version of PHP is 5.1.6 where the most recent version of PHP is 5.2.10 (shipped with Zend Server 4.0.4) and 5.3 (shipped with Zend Server 4.0.5).

Beyond easing maintenance for us from an installation and update perspective, Zend Server also offers a performance boost (an optimizer and cacher), monitoring features (logs, traces and event notifications), and simplified configuration (switching on and off extensions, setting directive properties) managed through its GUI Web console.

Installation
I installed Zend Server on two servers – an x86 and an x86_64 – running CentOS 5.3 using the RPM method. One is the test server; the other is a future production server that is hosting some supplemental applications now.

The production server has a tiered license provided by Zend, who is an IBM Business Partner. The development server will run a half-priced version of the license intended for test server installations.

In both cases, installation was straightforward. There are more detailed instructions available for other operating systems and package management methods.

  • My first step was to find other PHP packages on the system.
    [root@192.168.1.1]# rpm -qa | grep php
     

    And remove each one.

    [root@192.168.1.1]# rpm -e {package name}
     

    After uninstalling the PHP packages, php.ini will be backed up:

    /etc/php.ini saved as /etc/php.ini.rpmsave
  • Then, I installed Zend Server.

    [root@192.168.1.1]# tar xvzf ZendServer-4.0.4-RepositoryInstaller-linux.tar.gz
    [root@192.168.1.1]# cd ZendServer-RepositoryInstaller-linux/
    [root@192.168.1.1]# ./install.sh
     

    This script will set up your repositories, and kick off the installation process. It will stop, configure, and restart the existing Apache instance (we’ve kept that as a standard RPM).

The only additional package I needed to install that was not part of the default set was the DB2 driver. You must have a DB2 runtime client on the server at a minimum to use this.

  • Install the DB2 driver for PHP.

    [root@192.168.1.1]# yum install php-ibmdb2-zend-pe
     

A few tips
Of course, as with any PHP build, some post-installation configuration may be necessary.

I pointed out above that my existing php.ini was backed up after removing the older PHP packages. You’ll want to make sure the old and the new php.ini are functionally equivalent.

  • DB2
    For one of my servers, I didn’t have to follow any special configuration steps to get the Zend Server to interact with DB2, but the other wouldn’t load the DB2 extension at first.

    It failed with the following error.

    PHP Warning:  PHP Startup: Unable to load dynamic library ‘/usr/local/zend/lib/php_extensions/ibm_db2.so’ – libdb2.so.1: cannot open shared object file: No such file or directory in Unknown on line 0

    The resolution to this issue was simple, it requires you to source the DB2 environment for the Web server user. In my case, I added the following line to the /etc/init.d/httpd startup script:

    . /home/db2inst1/sqllib/db2profile
  • Mail
    I also had to make a small adjustment to my mail directives to point it to sendmail on my system, as described in this forum post.

    /usr/sbin/sendmail -t -i
  • PEAR
    The latest version of Zend Server fixes an issue with the PEAR installer, but if you are using the packaged (not tarball, version 4.0.5) version of Zend Server 4.0.4, you might want to follow the tips in this forum post.

If I run into any other issues or tips on Zend Server, I’ll post updates here.

I also hope to dig into the differences between Zend Core for IBM and Zend Server, in order to evaluate whether it’s a worthwhile cross-upgrade for my server at home that hosts this blog.

Find out more
To learn more about Zend Server from the source, check out the main product page, with pointers to the different editions, getting started tutorials and videos, and the FAQ.

The Zend Server documentation is very helpful too, including sections on best practices for performance and security.

As with Zend’s other products, they’ve also got an active forum for Zend Server.

Interesting links of the week

31 January 2008 » Football, Friends, IBM, PHP, Politics, Zend

Well, not exactly this week. I gathered a few links from the end of January that I figured would have some blogworthiness to them.

Instead of dedicating a whole post to each, here they are with a bit of commentary.

First up, because it’s my sister’s first appearance on TV, are Mona’s remarks to local news in St. Louis on what the female demographic means to this year’s presidential campaigns. While it is a Fox affiliate, congrats are still in order. :)

Yossi Leon announced that Zend Studio for Eclipse was tantalizing close to release. We heard a few more details at NYPHP about its launch. The Zend page carries the official announcement.

If you’re wondering exactly how the new Zend Studio for Eclipse differs from the Eclipse PDT (PHP Development Tools), this chart breaks it all down.

Jon Udell backs up my “.htm is dogsqueeze” argument in his much more eloquent .NET-specific rant, .aspx considered harmful.

I caught a glance of this article on naming the Triborough Bridge for Robert F. Kennedy in the New York Times.

I too am a little weary of the Kennedy badge on so many public buildings, but have an alternate suggestion… Rename the bridge for John F. Kennedy, and rechristen his namesake disaster of an airport for someone worthy of its reputation for mismanagement, George W. Bush.

And finally, though it pains me greatly to see Tom Brady’s name on a Web site I lovingly crafted for all that is good, there is an interesting press release on how IBM and the NFL have gone about making all those random stats available to announcers in real time.

That about wraps it up. Enjoy the weekend, I know I will.

Mashups from IBM at NYPHP in January

10 January 2008 » DB2, IBM, New York PHP, PHP, Zend

On Tuesday, January 22nd, Dan Gisolfi will talk about the latest PHP-based technologies from IBM for developing Web 2.0 mashups at New York PHP.

Centered around the concept of “situational applications,” IBM’s work with mashups targets a growing trend in Web site development.

Applications are increasingly built by end users to meet their particular needs at a particular time without the time and expense of a traditional software development process.

A recent paper in the IBM Systems Journal describes the new approach in great detail.

Situational applications are created rapidly by teams or individuals who best understand the business need, but without the overhead and formality of traditional information technology (IT) methods.

Understandably, traditional PHP developers might be wary of this new technology; as a general contractor would be if a Home Depot opened around the corner.

Instead, IT specialists should embrace the model as a foothold for PHP in the enterprise. To that end, Dan Gisolfi will:

  • Demo IBM’s Mashup Starter Kit (which includes IBM Mashup Hub and QEDWiki).
  • Highlight best practices for designing and assembling data-driven mashups.
  • Discuss IBM’s collaboration with Zend and ProgrammableWeb to bring mashups to the enterprise.

As always, New York PHP meetings are free and open to the public, but you must RSVP by 3pm on Monday, January 21st.