同様の質問が何度も何度も回答されていると確信しています。もしそうなら、私は間違った方向にグーグルで検索し、そのことをお詫びします.
私の問題: バックグラウンドでプロセスが実行されている Web ページを作成しています。私が話しているプロセスは R スクリプトであり、おそらく数日かけて実行されます。進行が開始されると、そのように開始されます。
exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
プロセスがまだ実行されているかどうかを追跡したいと思います。このようにして、ユーザーがチェックすると、終了したかどうかのメッセージが表示されます。ユーザーがサーバーにアップロードした入力ファイルを選択すると、追跡が開始および停止されます。また、プロセスが終了したときにページを更新して、彼が見ているだけの場合にページが変更されるようにしたい.
私には2つの可能性があります。プロセスIDを介して確認するか、出力ファイルが生成されているかどうかを確認できます。
私は試した
while(is_process_running($ps)){
ob_flush();
flush();
sleep(1);
}
これは、ページ上の他のすべての機能がフリーズすることを除いて、ある程度機能します。それが私の is_process_running($ps) 関数です。
function is_process_running($PID){
exec("ps $PID", $ProcessState);
return(count($ProcessState) >= 2);
}
私が本当に必要としているのは、最初のプロセスがまだ実行されているかどうかをチェックするバックグラウンドで実行されている別のプロセスであり、そうでない場合は、最初のプロセスが終了したときにページを更新します。どうやってそれをしますか?追加情報が必要な場合はお知らせください。すべての助けに感謝します。