php バックグラウンドプロセスを実行する 質問する

php バックグラウンドプロセスを実行する 質問する

ユーザーの操作に応じてディレクトリのコピーを実行する必要がありますが、ディレクトリが非常に大きいため、コピーが完了するまでの時間をユーザーに意識させずにこのような操作を実行できるようにしたいと考えています。

ご提案があれば、ぜひお聞かせください。

ベストアンサー1

これが 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;
}

おすすめ記事