2009年9月17日

[PHP-users 34774] Re:sleep関数が復帰せずプロセスがダウンする

堀田@長崎市です。

On Thu, 17 Sep 2009 10:10:35 +0900
Yuji KUBOTA <kubota.yuji@xxxxx> wrote:
Subject: [PHP-users 34771] Re: sleep関数が復帰せずプロセスがダウンする

> >> 定期的に処理を実行するプログラムをプロセスとして常駐化させ
> >> 利用したと考えています。

> >
> > レンタルサーバーとか厳しい制約があるんでしたっけ。
> 自己運営サーバーなので基本的にはサーバーに関する制限はなしです。
> 開発環境としてPHPで統一しておきたいと言う理由です。

参考になるかどうかはわかりませんが、私の職場(大学)では多数の
バッチ処理を php CLI で運用しています。一例を挙げると

root@xxxxx:~# cat /var/spool/cron/phpuser
(略)
#--------------------------------------------------------------------------
# 入退室状況表示対象研究室ステータスの取得
#--------------------------------------------------------------------------
*/1 * * * * $HOME/lc_view/progs/get_roomstat.php
#--------------------------------------------------------------------------
# 情報演習室におけるログイン状況の取得
#--------------------------------------------------------------------------
*/5 * * * * $HOME/get_smbstatus.sh >> /tmp/get_smbstatus.log >&/dev/null
#--------------------------------------------------------------------------
# 年次更新
#--------------------------------------------------------------------------
0 0 1 4 * $HOME/lc_view/progs/annual_update.php

それぞれ1分間に1回、5分間に1回、年に一回の処理です。

スクリプトの中身はいろいろ(オラクルやポスグレにアクセスしたり、
ssh 経由でいろんなサーバを巡回したり、メールを送ったり)ですが、
いずれにせよ、処理が終わったら単に終了すればいい(非常駐型)ので
プログラムが単純になり、保守性も向上します。Web アプリじゃないの
でセッションなどの状態遷移も意識する必要がない分、可読性もよく、
ブラウザも不要です。昔の COBOL の感覚です。

cron とシェルの使い方を覚えれば、いろいろと応用が利きますよ。

独立した処理を連続してやりたければ、複数の php スクリプトをまと
めて実行するシェルスクリプト(上記の get_smbstatus.shがそれ)を
作って cron に登録する、などという具合です。

エンドユーザに見せたい画面だけを Web アプリとして開発し、参照す
る DB の中身は CLI が生成/更新する、という使い方が多いです。

> > 常駐化なら、やはり常駐プロセスとしてプログラムを
> > 作成するのが正攻法だと思います。
> そのように見直すべきかとも考え始めております。
> それにしても、なぜプロセスがダウンするかの原因は明確にして
> おきたいと考えています。

もし対象が制御系だったり、監視系(インターバルが1分以内)だった
りする場合は、常駐型にならざるを得ないかもしれません。その場合で
も CLI ならデバッグも楽だし、apache の介在がなくなるので、原因の
絞り込みも少しは楽になるかもです。

--
HOTTA Michihide <hotta@xxxxx>
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2009年9月17日 11:14
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/88646
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。