Chapter 10. Multi-tasking in PHP and MySQL
WHAT'S IN THIS CHAPTER?
Efficiently multi-tasking in PHP
Using Gearman to multi-task and farm out work
Seeing an application put Gearman and various other components discussed in this book together to build a search application
How many times have you developed a web application that has some functionality which requires running an external program or even forking a separate process? This is not something you generally like to do from your web application because you want to make it run as fast and efficiently as possible, yet you want to provide a lot of functionality for end users. Thus the problem arises of how to get a fast but full-featured application that can process as much as possible.
Many years ago (in the Internet time line) a web site, livejournal.com, was facing a similar dilemma. Users were uploading so many pictures to the web site that had to be processed into their respective accounts. This included resizing functionality such as creating thumbnails or reducing the raw image size to something more appropriate for the web site to display. These pictures mostly consisted of kittens — millions of pictures of kittens — overloading the web application that is Livejournal. Then the creative mind of Brad Fitzpatrick formulated a great idea to deal with this overload: have a server that spawns processes that do things such as processing pictures of kittens, outside of the web server application. Thus came the advent of Gearman. ...