我需要在用户操作时执行目录副本,但是目录很大,因此我希望能够执行这样的操作,而用户却不知道完成副本所花费的时间。
任何建议将不胜感激。
假设它在Linux机器上运行,我总是这样处理:
exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
这将启动命令$cmd,将命令输出重定向到$outputfile,并将进程ID写入$pidfile。
$cmd
$outputfile
$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; }