あるPHPプログラムをCL上でデーモンとして動かしています。
しかし、なぜか途中で止まってしまい、CLが閉じてしまいます。
メモリが解放されず落ちたのかと思い、各変数をunsetしたのですが解決されません。
何が思い当たるでしょうか?
考えられることとして、実行時間を使い切った可能性があります。
http://php.net/manual/ja/function.set-time-limit.php
http://php.net/manual/ja/info.configuration.php#ini.max-execution-time
デフォルトは30秒です。
えらく短いように見えますが、スリープしたりデータの到着を待ったり
といった時間は実行時間に含まれてないので 通常は大丈夫です。
しかし裏でずっと動いているとなると、必ず使い切ります。
コメント(1件)
「CLが閉じてしまいます」とは端末ソフトが(異常)終了してしまうということ?
(linux?, mac?, リモート?)
それとデーモンとの関係が分かりません。端末とは切り離されていると思うのですが。
端末を閉じるとデーモンが終了してしまう、ということだと、この切り離しが出来ていないのだと思います。
デーモン化はどのように行ってますか?なにかモジュール使ってます?それとも自前?
自前なら下記が詳しかったです。
https://engineering.otobank.co.jp/2015/03/12/daemon/
もう少し具体的な環境とか、どうやってデーモン化してるのかとかあるとヒントになります。
あと、カーネルに殺されてるならカーネルメッセージにあると思いますし、ログを確認してみては?
デーモンにデバッグログ機能付けて要所要所でログ出してみるのも手です。
あと、終了はどの程度の時間で起こります?短時間なら別ウィンドウでtopとかしてリソース監視するとか。