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

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

Barbara Streisand
リリース: 2024-12-25 11:23:10
オリジナル
112 人が閲覧しました

How Can I Execute Time-Consuming PHP Processes in the Background Without Blocking the User?

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

ユーザー エクスペリエンスを妨げることなく、ディレクトリのコピーなどの時間のかかるプロセスを実行するのは困難な場合があります。この記事では、このようなタスクをバックグラウンドで実行できるようにするソリューションを紹介します。

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

ユーザーの中断なしにディレクトリ コピーを開始するには、次の手順を検討してください。

  1. exec() を使用してコマンド:
    exec を使用して copy コマンドを起動し、出力をファイル ($outputfile) にリダイレクトし、プロセス ID を別のファイル ($pidfile) に追加します。これにより、継続的な監視が保証されます。

    exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
    ログイン後にコピー
  2. プロセス ステータスの監視:
    isRunning 関数を実装して、PID に基づいてプロセスのステータスを追跡します。

    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;
    }
    ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート