PHP でのバックグラウンド プロセスの実行
ユーザー エクスペリエンスを妨げることなく、ディレクトリのコピーなどの時間のかかるプロセスを実行するのは困難な場合があります。この記事では、このようなタスクをバックグラウンドで実行できるようにするソリューションを紹介します。
バックグラウンド プロセスの実行
ユーザーの中断なしにディレクトリ コピーを開始するには、次の手順を検討してください。
exec() を使用してコマンド:
exec を使用して copy コマンドを起動し、出力をファイル ($outputfile) にリダイレクトし、プロセス ID を別のファイル ($pidfile) に追加します。これにより、継続的な監視が保証されます。
exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
プロセス ステータスの監視:
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 サイトの他の関連記事を参照してください。