Remodeling Four Kitchens: A look inside our new brand
With the additions of Advomatic and Manatí, we’ve had an exciting few years at Four Kitchens. While we’ve remained fundamentally the same organization, we’ve also been evolving into something new. It’s time for our brand to catch up.Learn more
A more modern, sustainable approach to higher ed websites with YaleSites
A higher ed website is a product, not a project. Learn about Yale’s sustainable approach to digital development and how your team can do the same.Learn more
News and insights from the Web Chefs
Filter by topic
Filter by type
Initial impressions of HipHop PHP and porting Pressflow
I spent most of the weekend porting Pressflow to HipHop PHP. Josh Koenig from Chapter Three was also kind enough to spend much of his Saturday working with me. Pressflow doesn't quite run on HipHop yet, but we're working on it. Building HipHop PHP and Pressflow Getting a good build of HipHop was quite a challenge. However, if you're on 64-bit Ubuntu 9.10, you just have to follow our build instructions.
Making Drupal and Pressflow more mundane
Drupal and Pressflow have too much magic in them, and not the good kind. On the recent Facebook webcast introducing HipHop PHP, their PHP-to-C++ converter, they broke down PHP language features into two categories: magic and mundane. The distinction is how well each capability of PHP, a dynamic language, translates to a static language like C++. "Mundane" features translate well to C++ and get a big performance boost in HipHop PHP. "Magic" features are either unsupported, like eval(), or run about as fast as today's PHP+APC, like call_user_func_array().
Anticipage: scalable pagination, especially for ACLs
Pagination is one of the hardest problems for web applications supporting access-control lists (ACLs). Drupal and Pressflow support ACLs through the node access system.
Intelligent memcached and APC interaction across a cluster
Anyone experienced with high-performance, scalable PHP development is familiar with APC and memcached. But used alone, they each have serious limitations: APC Advantages Low latency No need to serialize/unserialize items Scales perfectly with more web servers Disadvantages No enforced consistency across multiple web servers Cache is not shared; each web server must generate each item memcached Advantages Consistent across multiple web servers Cache is shared across all web servers; items only need to be generated once Disadvantages High latency Requires serializing/unserializing items Easily shards data across multiple web servers, but is still a big, shared cache Combining the two Traditionally, application developers simply think about consistency needs. If consistency is unnecessary (or the scope of the application is one web server), APC is great. Otherwise, memcached is the choice. There is, however, a third, hybrid option: use memcached as a coordination system for invalidation with APC as the main item cache. This functions as a loose L1/L2 cache structure. To borrow terminology from multimaster replication systems, memcached stores "tombstone" records.
Benchmarks, hot off the Pressflow
Independent benchmarks by Josh Koenig from Chapter Three show a moving from plain Drupal to Pressflow + Varnish. His testing was performed on a small demonstrating how Pressflow can deliver internet-scale performance on modest, inexpensive hardware. Pressflow is able to deliver this class of performance because it's optimized to support Varnish and other enterprise-grade web infrastructure tools in ways that standard Drupal cannot. With Pressflow's API compatibility with Drupal, Josh's move from Drupal to Pressflow on his project didn't require any coding or extensive testing. He just replaced Drupal core with Pressflow. (It's no harder than a minor Drupal update.) For single-server setups in the Amazon EC2 cloud, Josh's Project Mercury AMI provides a click-and-run, configured setup with the Pressflow + Varnish stack. For more complex setups, Four Kitchens provides infrastructure consulting services on the Pressflow system.
Need to scale Drupal on EC2? Check out Chapter Three’s Mercury project
Josh Koenig from Chapter Three has made pre-release EC2 AMIs (pre-packaged virtual machine images) for Mercury, a project to combine Four Kitchens' Drupal-derived, high-performance Pressflow with Varnish, Cache Router, and memcached. Initial results show it easily saturating the EC2's pipe. Mercury instances directly update their Pressflow releases from the Four Kitchens Bazaar server. Mercury is an exciting project for anyone who needs to run a high-traffic, Drupal-based site without having to configure a bunch of caching systems.
Making the web a better place to teach, learn, and advocate starts here...
When you subscribe to our newsletter!