プロセスを起動してリターンコードを取得するか、プロセスが長すぎる場合は中断します

StackOverflow https://stackoverflow.com/questions/1999580

質問

コマンドライン (別名 CLI モード、Web サーバーは関与しません) から PHP スクリプトを起動しました。

このスクリプトでは、ある時点から実行されるコマンドを起動します。通常は数分後に終了します。ただし、さまざまな問題により、このコマンドが何時間も実行されることがあります。そのため、私にできる最善の方法は、コマンドを強制終了して、しばらく待ってから再度実行することです。

強調したいことが 2 つあります。

  • そのコマンド内のコードを制御できないため、障害検出を改善することはできません。
  • それは重要なタスクではないので、そのように機能してもまったく問題ありません。

そうは言っても、コード内を改善して、コマンドが N 秒以上実行されている場合に子プロセスを強制終了できるようにしたいと考えています。ただし、コマンドが正常に実行された場合は、コマンドからリターンコードを取得したいと考えています。

疑似コードは次のようになります。

Launch command
While command is running
{
    If the command is done running
    {
        echo return code
    }
    else
    {
        If the command has been running for more than N seconds
        {
            Kill the child process
        }
    }
}

これを PHP でどのように実装しますか?

ありがとう !

解決 :結局、SIG_ALERT シグナルを使用することになりました。シグナル処理と pcntl ライブラリの詳細については、 ゴードンが提供したページ彼の投稿.

役に立ちましたか?

解決

読む通じ <のhref = "HTTPのこの章を:/ /www.tuxradar.com/practicalphp」のrel = "nofollowをnoreferrer">実用PHPプログラミングする。 これは、広範囲のプロセスとの相互運用カバーしています。そしてまた、プロセス制御する上のPHPマニュアルのページを見ています。

はまた、 Gearmanする

に興味があるかもしれません

申し訳ありませんが任意のコードを提供していないため。私は念のために見てメモリに保持して、私は私が今までそれを必要とするだろう、プロセス制御のものの必要がありませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top