Daemon v PHP

posted 31.08.2013

PHP je pro mě ideální skriptovací jazyk, znám ho jak svý boty a všechno od práce se souborama po tahání věcí po sítí s ním jde rychle a dostatečně efektivně. Díky tomu, že za poslední rok nebo dva z jádra odstranili všechny memory leaky, které jsem potkal při tvorbě dlouho běžících skriptů (nepočítám vlastní memory leaky), jsem mohl začít psát v PHP i tasky běžící na pozadí. Jako základ mi posloužila podobná Pythonová implementace. Od vytvořené kostry stačí jen vytvořit podtřídu a napsat samotnou implementaci.

Použití

composer require vvondra/php-daemon Build Status
<?php

require_once __DIR__ . '/../vendor/autoload.php';

class Sleeper extends PHPDaemon\Daemon {

  public function run() {
		while (true) {
			echo "zzzZZZzzz...\n";
			sleep(2);
		}
	}
}

PHPDaemon\Daemon::parseArgs(new Sleeper);

Výše uvedené stačí uložit jako sleeper.php a pak už jen použít:

php sleeper.php start
php sleeper.php stop
php sleeper.php status

Writing a daemon in PHP (English version)