I’ve been researching how to best write a long running PHP script executed on the command-line, and whilst there are Linux commands you can use to daemonise a command, these can also be written into a php script as well.
The easiest way to daemonise a command on a posix system is to run:
nohup command < /dev/null > /dev/null 2>&1 &
Ibuildings, a PHP development company with offices in the Netherlands, UK and Italy, have been running a series of challenges, with prizes such as iPads and tickets to the Dutch PHP Conference (DPC, of which they host). The latest completed challenge, the Elephpant challenge, was in the form of a code contest to write the fastest, shortest and least complex algorithm in PHP to solve a Travelling Salesman problem.
I’m happy to say that I was one of the winners for this task, getting 30 points (10 in each scoring method), which was the maximum points possible, for the medium category (people with 2 to 4 years experience), and winning a ticket to the DPC.
Here I will describe the two solutions I researched and completed. I only submitted the one which I thought would give me the biggest chance of winning, but each had their own specialities.
Since my last post on using Nginx to cache proxied content, they have added proper cache handling via their proxy_cache* directives. These are much more suitable for use, as they capture the HTTP response headers and also use more advanced Cache-Control checks.
To start, install the latest stable Nginx avaliable at http://wiki.nginx.org/NginxInstall .
OData is a new API protocol that has recently been released by Microsoft, along with the launch of their new site on the 16th March 2010. It is a RESTful standard, which adds a lot of its own goods to the table.
As a RESTful standard, it exposes a web service in the form of resources accessible via discrete HTTP urls, representing actions via the HTTP methods. It fills in the gaps that the REST style of architecture leaves open, giving a full specification, from the request to the response (although omitting authentication and authorisation). OData surprisingly also allows RPC-style operations as well.
Here are several techniques for creating a secure shared web server.
Update 2010-03-14 – Revised opinion about APC and eAccellerator, which possibly do use memory-mapped files, also added detail about mpm_worker not working with mod_apparmor.
If you’ve ever searched for a WordPress theme on WordPress.org, you’ve probably found that none of them are suitable for your personal blog. Most tend to be complex designs that you’re sure someone created with a specific look in mind, but they don’t suit you.
A friend from work mentioned something similar almost 6 months ago, so when she tweeted a suggestion to design something like the Posterous look (it’s a very nice simple but popular look), I offered to help, figuring it would take no time at all to create something similar in WordPress.
First up, there is no silver bullet in building a web service infrastructure. There are two prevailant types, however, that you should ideally be choosing from:
- RPC (remote procedure call) – e.g. SOAP, XML-RPC
- REST (Representational state transfer) – e.g. umm? REST?
What I strongly suggest is using one of these, and not designing your own protocol, or proprietry XML straight-up. As for which you should choose…
There are times when a Subversion working copy can mess up. This is usually due to human error, for example due to permissions problems or moving files or folders incorrectly
These can usually be easily recoverable, although at times it can seem there’s no solution. Here are a few examples and their solutions.
Webtatic Optimizer is a tool that can be used to improve these areas, and can help get an almost perfect score.