Ole Markus has a new post to his blog looking at a technique for working with memcached and fetching data out of the store using a binary semaphore for better performance.

A typical document takes but a few hundred milliseconds to generate when a single request for the document enters the backend. The problem is that this is a highload website. In its current form, the backend serves hundreds of pages per second. This pretty much guarantees that the backend will concurrently receive cache miss on multiple languages and at the same time also receive cache miss on the pre-translated document.

Given that he wants the translated version to be the one that's always shared, a problem can come up when the cache request is "missed" and the document starts generating from multiple places. His fix for the situation is that only the first miss generates and all others see a lock on it and wait for it to be removed before successfully fetching the result. He provides code in a "LockedMemcached" class to help make it all more useful.

John Lim has written up an article for the Oracle Technology Network about creating high performance systems with Oracle's Real Application Clusters (RAC) and PHP.

Running a software application that is able to work reliably through hardware and software failures is incredibly hard. [...] In this article, I will cover the network, architecture and design of our RAC application. Then I will discuss the real-world experiences and problems we experienced.

He details their RAC setup - load balancers, application servers and their RAC servers - before working through the different technologies and how they're all installed and configured to work together most efficiently.

On the Ibuildings techPortal blog today there's a new article (a case study of sorts) on how to survive a plane crash. More specifically, a look at how the NU.nl news website handled the load as a result of the crash of a Turkish Airliner.

On February 25th, 2009, less than 90 days after the new infrastructure was rolled out, it was stress tested when a Turkish Airliner crashed at Schiphol. On that day the new site set a single day traffic record by serving up 21 million page views in a 24 hour time period, all without any noticeable slowdown and without having to bring additional hardware online to handle the additional load.

Their framework of choice, CodeIgniter, allowed then to create snippets of content - cached versions - that could be pulled and displayed without having to render them every single time. They looked into the Varnish project and a ATK-based CMS to piece it all back together.

At my company, we typically organize our test case classes into high-level groups such as unit and functional. Method-level group annotations are inconvenient for us because we'd need to annotate every method of every test case class.

He includes an example of their use - commenting a testing class and running it through the phpunit command line tool with a call to the testing group's name.

On his blog today, Justin Silverton has posted this brief new tutorial covering the use of PEAR's cache_lite package.

Cache_lite is a php/pear caching module that is designed for high traffic sites. It is different than most caching systems because it has a built-in locking mechanism that will prevent cache corruption that can sometimes occur when there are a large amount of concurrent users trying to read and write to your cached data.

He wastes no time getting to the examples, showing first a very basic example of chacing/looking for a cache of your data. There's no installation HOWTO, but if you're familiar with the PEAR system, installation should be a simple matter.