ジョブサーバというものを知ったので、立ててみる。
色々種類があったけど、
Gearmanが一番簡単そうだったので、
Gearman + PHP を使ってみる。
OSは CentOS 6.4 です。
すでにPHPは使える状態だとする。
他のサイトではソースをmakeしてるみたいだけど、yum でいける。
【インストール】
//epel or remi を登録する必要があるかもしれない。
# yum -y install gearmand
//PHP拡張機能
# yum -y install libgearman-devel
# pecl install gearman
「extension = gearman.so」 を php.ini に追記する。
設定を反映させるためにApacheを再起動すること。
【Gearmanを起動】
# /etc/init.d/gearmand start
【動作確認】
--- worker.php ---
<?php $worker = new GearmanWorker(); $worker->addServer(); $worker->addFunction('test', 'my_test'); while ($worker->work()); function my_test($job) { print $job->workload()."\n"; }
--- client.php ---
<?php $client = new GearmanClient(); $client->addServer(); $time = time(); print $time."\n"; $client->doBackground("test", $time); if ($client->returnCode() != GEARMAN_SUCCESS) { print "faild add job!\n"; }
上記のソースは以下のサイトからコピペしています。
何か問題があれば削除するので連絡を下さい。
http://d.hatena.ne.jp/toshiyuki_saito/20110128
まずはclient.phpを実行してジョブを登録する。
# php client.php
すると、Unixタイムスタンプが表示されるはず。
次に worker.php を実行してジョブを処理させる。
# php worker.php
これで先ほどのUnixタイムスタンプが表示されるはず。
ジョブサーバのWorkerはwhileループで常時稼働しているので、
確認が終わったら強制終了するといい。