1. ホーム
  2. php

[解決済み】phpでバックグラウンドプロセスを実行する

2022-04-02 07:55:01

質問

ユーザーの操作でディレクトリのコピーを実行したいのですが、ディレクトリがかなり大きいので、コピーが完了するまでの時間をユーザーに意識させずに実行できるようにしたいのですが、可能でしょうか?

何かご提案があれば、ぜひお願いします。

解決方法は?

Linuxマシン上で動作していると仮定して、私はいつもこのように対処しています。

exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));

これは、コマンドを起動します。 $cmd にリダイレクトし、コマンド出力を $outputfile に、プロセスIDを書き込みます。 $pidfile .

これによって、プロセスが何をしているのか、まだ動いているのかを簡単に監視することができます。

function isRunning($pid){
    try{
        $result = shell_exec(sprintf("ps %d", $pid));
        if( count(preg_split("/\n/", $result)) > 2){
            return true;
        }
    }catch(Exception $e){}

    return false;
}