To run the class I posted yesterday, I typically use a class called DaemonRunner. This class sets up for proper signal handling, and 'executes' the class extended from Daemon.


class DaemonRunner {
    public static function exec($className) {
        $argv = $_SERVER['argv'];
        $daemon = new $className($argv);
        while (!$daemon->isDone()) {

The first statement is a PHPism. This allows PHP to check for signals every 1 tick. A tick is simply a low-level PHP interpreter step. The way I've setup my daemon and signal handling by default, the PHP will finish its current iteration and then quit when receiving a signal. This ensures that the database, and whatever background stuff aren't left in inconsistent states. As with anything, you're free to modify, extend, or otherwise alter this behavior.