ホームページ >バックエンド開発 >PHPチュートリアル >ユーザー インターフェイスをブロックせずに、長時間実行される PHP タスクをバックグラウンドで実行するにはどうすればよいですか?
PHP でのバックグラウンド プロセスの実行
ディレクトリ コピー操作などの長時間実行タスクの実行は、ユーザー インターフェイスをブロックすると問題が発生する可能性があります。この記事では、そのようなタスクをバックグラウンドで実行し、ユーザーにシームレスなエクスペリエンスを提供するソリューションを検討します。
提供された回答で示唆されているように、Linux 環境はこれに対する信頼性の高いアプローチを提供します。 exec() 関数を使用すると、次のような構文を使用してバックグラウンドでコマンドを実行できます。
exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
ここで、$cmd は実行されるコマンドを表します。コマンドの出力は $outputfile にリダイレクトされ、プロセス ID は $pidfile に書き込まれます。これにより、isRunning():
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 タスクをバックグラウンドで実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。