start-stop-daemon, Gearman and a little PHP
The scope of this blog entry is to give you a quick and dirty demo for
start-stop-daemon together with a short use case on Gearman (all on Ubuntu). In this example, I'm using the
start-stop-daemon to handle my Gearman workers through an
Gearman is a queue! But unlike for example most of the backends to
Zend_Queue, Gearman provides a little more than just a message queue to send — well — messages from sender to receiver. With Gearman it's trivial to register functions (tasks) on the server to make in order to start a job and to get stuff done.
For me the biggest advantages of Gearman are that it's easy to scale (add a server, start more workers) and that you can get work done in another language without building an API of some sort in between. Gearman is that API.
Back to start-stop-daemon
start-stop-daemon is a facility to start and stop programs on system start and shutdown. On recent Ubuntus most of the scripts located in
/etc/init.d/ make use of it already. It provides a simple high-level API to system calls — such as stopping a process, starting it in a background, running it under a user and the glue, such as writing a pid file.
My gearman start script
Once adjusted, register it with the rc-system:
update-rc.d script defaults. This will take care of the script being run during the boot process and before shutdown is completed.
A little more detail
The script may be called with
/etc/init.d/script start|stop|restart (the pipes designated "or").
Upon start, we write a pidfile to
/var/run and start the process. The same pidfile is used on stop — simple as that. The rest of it is hidden behind
start-stop-daemon which takes care of the ugly rest for us.