在 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中文网其他相关文章!