読者です 読者をやめる 読者になる 読者になる

【PHP】PHPをデーモン化する PEAR の System_Daemon

PHP

PHPで書いた常駐型スクリプトをデーモン化したいと思ったら、
PEARのSystem_Daemonというパッケージでできるらしい。

環境は CentOS 6.4 です。


【インストール】
# yum install php-posix
# pear install System_Daemon
# pear install Log


【使い方】

<?php
require_once 'System/Daemon.php';
$options = array(
    'appName' => 'deamon_name', // デーモンの名前
    'appDir' => dirname(__FILE__) // アプリを動かすディレクトリ
);
System_Daemon::setOptions($options);
System_Daemon::start();
while (!System_Daemon::isDying()) {
    //log出力 場所は /var/log/デーモン名.log
    System_Daemon::log(System_Daemon::LOG_INFO, date('Y/m/d H:i:s'));
    //ここに処理を書く
    System_Daemon::iterate(1); //sleep
}
System_Daemon::stop();

とりあえず動作させるだけなら上記のコードでOK
オプションとしてログの出力場所、実行ユーザーの設定が可能。
デフォルトだとログの出力先は「/var/log/デーモン名.log」になり、
実行ユーザーはrootになる。

実行ユーザーを変更したい場合は以下のようにPID, GIDを設定する。

<?php
$options = array(
    'appName' => 'deamon_name', // デーモンの名前
    'appDir' => dirname(__FILE__), // アプリを動かすディレクトリ
	"appRunAsUID" => 48,
    "appRunAsGID" => 48 
);

ただ、webからアクセスすると、以下のエラーで実行できない。
PHP is compiled without --enable-pcntl directive」

これを解決するにはPHPをソースからインストールする必要がある。
yumじゃダメみたい。
ってことで、コンソールから直接実行することに・・・・。
いまいち使い勝手が悪いな・・・。