Behind the Site
Our website is powered by the following:
Zend Server and Zend Platform
We use Zend Server and Zend Platform to run and manage zend.com, our knowledge base, forums and online store applications. Here's why:
- Acceleration via opcode caching - Zend Server includes Zend Optimizer+ that provides excellent opcode caching and acceleration for PHP.
- Dynamic content caching - Zend Server and Zend Platform offer the ability to cache entire pages based on URLs, or via partial content caching using their API. We implemented partial content caching in our online store in order to reduce response times while providing an individualized user experience.
- PHP monitoring and troubleshooting - We have configured Zend Server and Zend Platform to monitor a variety of PHP events, so that we can respond pro-actively to bugs and performance bottlenecks. Using the root cause data that Zend Server captures we can quickly isolate and fix issues.
- Zend Download Server - Zend Server and Zend Platform can intercept calls to files that are larger than a given, configurable size, offloading those calls directly to Apache to boost performance.
Zend Framework is the backbone of our PHP-based Zend.com site now. Extending the art and spirit of PHP, Zend Framework is based on simplicity, object-oriented best practices, business friendly licensing, and a rigorously
tested agile codebase all focused on the challenges of building more secure, reliable, and modern Web 2.0 applications and web services.
It has eliminated the tedious details of our PHP coding and let us focus on the big picture design of our site—as a result we got our application done much sooner than we would have expected. Zend Framework’s strength is in its flexible, highly-modular design with support for MVC, making our code more reliable, reusable, and easier to maintain. Learn more
The following components are being used by us:
- Zend_Cache - a simple & flexible component we’ve used to speed up access to our data and includes support for multiple back-end and front-end caching solutions (we use Zend Server and Zend Platform as our back-end), as well as tagging, iterating, manipulating, & removing subsets for our cached data.
- Zend_Config - While Zend Framework itself is configuration-less, it's often necessary to have some way to specify configurable options. Zend_Config provides multiple backends for configuration storage, and a simple, intuitive, object-oriented interface for accessing it. We store configuration as simple PHP arrays, which are then wrapped by Zend_Config.
- Zend_Controller - Zend_Controller is the heart of Zend Framework's MVC (Model - View -Controller) implementation. It features a flexible helper and plugin architecture that allows customization of the workflow at multiple points in the application. This site utilizes many of these for everything from querying web services to verifying access rights.
- Zend_Db and Zend_Db_Table - Zend_Db_Table is a classic implementation of both the Table Data Gateway and Row Data Gateway design patterns, allowing for easy and intuitive access to database tables and rows, as well as an entry point for custom business logic surrounding our data.
- Zend_Feed - Zend_Feed allows both consuming and building RSS and Atom feeds. We use it on the site to pull in news from the Zend Developer Zone, as well as to build our own RSS feeds.
- Zend_Http_Client - To aid migration of existing PHP 4-only site content, we have created a proxy utilizing Zend_Http_Client, allowing us to serve that content within the new site layout, as well as to share authentication between the two.
- Zend_Search_Lucene - Lucene is a search indexing technology originally written in Java; Zend_Search_Lucene is a PHP implementation that reads and creates binary-compatible Lucene indexes. We have built an indexing search spider utilizing Zend_Search_Lucene, as well as a frontend to that index.
- Zend_View_Interface - Zend_View is the 'V' in Zend Framework's MVC architecture. One key strength it provides is the ability to allow varying implementations for different template engines. This site uses this feature to wrap a custom version of Smarty as its view layer.
- Zend_XmlRpc - Web services are an integral part of Zend Framework, and it features a number of web service consumers as well as servers. This site both creates and consumes XML-RPC services utilizing Zend_XmlRpc.
Smarty Template Engine
Smarty is a template engine for PHP, designed to facilitate clear separation of application code from the presentation layer of a site. It has a large user base and widespread acceptance in the PHP community.
The content management system used for Zend.com has a slightly modified version of Smarty, around which we have implemented an interface compatible with Zend Framework's Zend_View component.