PHP执行后台进程

PHP执行后台进程

我需要在用户操作上执行目录副本,但是目录相当大,所以我希望能够在用户不知道完成副本所需的时间的情况下执行这样的操作。

如有任何建议,将不胜感激。


收到一只叮咚
浏览 885回答 4
4回答

陪伴而非守候

假设这是在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;}

白衣染霜花

以任何语言(php/bash/perl/etc)编写服务器端脚本,然后从php脚本中的过程控制函数中调用它。该函数可能检测标准io是否用作输出流,如果是,则将设置返回值。Proc_Close (Proc_Open ("./command --foo=1 &", Array (), $foo));我在命令行中使用“睡眠25s”作为命令进行了快速测试,它运行起来很有魅力。
打开App,查看更多内容
随时随地看视频慕课网APP