PHP


あるPHPプログラムをCL上でデーモンとして動かしています。

しかし、なぜか途中で止まってしまい、CLが閉じてしまいます。

メモリが解放されず落ちたのかと思い、各変数をunsetしたのですが解決されません。

何が思い当たるでしょうか?

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2015/05/29 17:45:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:iww No.1

回答回数101ベストアンサー獲得回数10

ポイント100pt

考えられることとして、実行時間を使い切った可能性があります。
http://php.net/manual/ja/function.set-time-limit.php
http://php.net/manual/ja/info.configuration.php#ini.max-execution-time

デフォルトは30秒です。
えらく短いように見えますが、スリープしたりデータの到着を待ったり
といった時間は実行時間に含まれてないので 通常は大丈夫です。
しかし裏でずっと動いているとなると、必ず使い切ります。

  • id:TransFreeBSD
    CLと言うのはコマンドライン?
    「CLが閉じてしまいます」とは端末ソフトが(異常)終了してしまうということ?
    (linux?, mac?, リモート?)
    それとデーモンとの関係が分かりません。端末とは切り離されていると思うのですが。

    端末を閉じるとデーモンが終了してしまう、ということだと、この切り離しが出来ていないのだと思います。
    デーモン化はどのように行ってますか?なにかモジュール使ってます?それとも自前?
    自前なら下記が詳しかったです。
    https://engineering.otobank.co.jp/2015/03/12/daemon/

    もう少し具体的な環境とか、どうやってデーモン化してるのかとかあるとヒントになります。
    あと、カーネルに殺されてるならカーネルメッセージにあると思いますし、ログを確認してみては?
    デーモンにデバッグログ機能付けて要所要所でログ出してみるのも手です。
    あと、終了はどの程度の時間で起こります?短時間なら別ウィンドウでtopとかしてリソース監視するとか。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません