ホームページ >バックエンド開発 >PHPチュートリアル >ユーザー インターフェイスをブロックせずに PHP でバックグラウンド プロセスを実行するにはどうすればよいですか?

ユーザー インターフェイスをブロックせずに PHP でバックグラウンド プロセスを実行するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-27 21:51:09269ブラウズ

How Can I Execute Background Processes in PHP Without Blocking the User Interface?

PHP でバックグラウンド プロセスを実行する

多くの Web アプリケーションでは、ディレクトリのコピーなど、時間のかかるタスクを実行する必要があります。ユーザー エクスペリエンスを向上させるには、ユーザー インターフェイスを中断せずにこれらのタスクをバックグラウンドで実行することが望ましいです。

PHP でのバックグラウンド プロセスの実行:

PHP では、プロセスを実行します。背景は難しいかもしれません。ただし、Linux 環境の場合、一般的な解決策は exec 関数を使用することです:

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

このコマンドは次のことを実現します:

  • $cmd を起動します:バックグラウンドで実行されるコマンド。
  • 出力をリダイレクトします: stdout および stderr 出力を $outputfile にルーティングします。
  • プロセス ID を保存します: プロセス 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;
}

この関数を使用すると、ps コマンドの出力に基づいて、指定された PID のプロセスがまだ実行されているかどうかを確認できます。

以上がユーザー インターフェイスをブロックせずに PHP でバックグラウンド プロセスを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。