我需要在用户操作时执行目录副本,但目录非常大,所以我希望能够执行这样的操作,而无需用户知道副本完成所需的时间。

任何建议将不胜感激。

 

解决方法:

假设这是在Linux机器上运行的,我总是像这样处理它:

exec(sprintf(\"%s > %s 2>&1 & echo $! >> %s\", $cmd, $outputfile, $pidfile));

这将启动命令$cmd,将命令输出重定向到$outputfile,并将进程ID写入$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;
}
收藏 打印