1

php passthru()関数を使用する場合、デフォルトでは、外部スクリプトの実行が終了するまでそのままになります。

PHPのマニュアルによると:::::「プログラムがこの関数で開始された場合、プログラムをバックグラウンドで実行し続けるには、プログラムの出力をファイルまたは別の出力ストリームにリダイレクトする必要があります。そうしないと、プログラムの実行が終了するまでPHPをハングさせます。」-http ://php.net/manual/en/function.passthru.php

特定の時間(たとえば30秒間)の外部スクリプトデータを収集し、その後phpスクリプトの実行を続行したいと思います。それを行う方法はありますか?

私の現在のコードは次のとおりです。

    ob_start();
    passthru("/home/somefolder/somefolder2/program $pic1 $pic2");
    $details = ob_get_contents();
    ob_end_clean();

上記のコードの問題は次のとおりです。「プログラム」スクリプトがしばらく実行され続けることがありますが、このプロセスでユーザーが30秒を超えてハングアップすることを許可したくありません。

出力をファイルにリダイレクトし、30秒後に読み取ることを考えました(マニュアルによる)。しかし、出力をファイルにリダイレクトする方法がわかりません。

4

1 に答える 1

1
"/home/somefolder/somefolder2/program $pic1 $pic2 > /path/to/your/file 2>&1"

バックグラウンドで実行したい場合は&、最後に追加します。

"/home/somefolder/somefolder2/program $pic1 $pic2 > /path/to/your/file 2>&1 &"
于 2012-05-29T11:20:40.250 に答える