我需要在用户操作时执行目录副本,但是目录很大,因此我希望能够执行这样的操作,而用户却不知道完成副本所花费的时间。
任何建议将不胜感激。
假设它在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脚本,我已经完成了脚本,但是大约要花10分钟才能完成它打算完成的过程。这不是问题,但是我想我必须一直保持页面加载,这很烦人。我可以使用它来启动该过程,然后在10分钟后再回来查看它生成的日志文件吗? 问题答案: 好吧,您可以使用“ ignore_user_abort(true)” 因此,脚本将继续起作用(注意脚本的持续时间,也许添加“set_time_limit(
问题内容: 我需要执行一个shell脚本。难得的是我想这样做 我不希望它等待命令完成,我希望它在后台进程中运行。我不想要另一个php线程,因为它将超时,该命令最多可能需要3个小时才能完成。 问题答案: 您需要重定向命令的输出。 如果使用此功能启动程序,则要使其在后台继续运行,必须将程序的输出重定向到文件或其他输出流。否则,PHP会挂起,直到程序执行结束。 http://php.net/manual
问题内容: 我正在使用Dockerfile创建Docker映像。我想在启动Docker容器时执行一些脚本。目前,我有一个Shell脚本来执行所有必要的过程 CMD [“ sh”,“ start.sh”] 我想用在后台示例中运行的进程执行shell命令 CMD [“ sh”,“-c”,“ mongod –dbpath / test&”] 问题答案: 除了对您的问题的评论已经指出有关Docker最佳实
我正在使用DockerFile创建一个docker图像。我想在启动docker容器的同时执行一些脚本。目前我有一个shell脚本来执行所有必要的进程 CMD[“sh”,“start.sh”]
问题内容: 我试图通过Linux中的命令行在后台连续运行PHP脚本。我已经尝试过该命令,但是脚本执行似乎很快终止,而脚本应继续运行直到该过程终止。 有什么建议么? 问题答案: 您确定脚本不包含任何错误吗?这就是通常使“ 执行很快终止 ”的原因。 首先,附加: 在脚本顶部显示可能存在的任何错误,然后可以使用: 即使会话断开连接或用户注销,nohup也会运行命令。 要么 与上述相同,但不创建文件。 您
问题内容: 我想使用ffmpeg在php中将视频转换为.flv。目前,我正在执行此操作,但是它会挂起浏览器,直到文件上传完毕。我一直在寻找有关如何在后台运行exec()进程的php文档,同时使用返回的PID更新进程。这是我发现的: 我还使用一个技巧来跟踪后台任务是否正在使用返回的PID运行: 我是否想创建一个单独的.php文件,然后从php cli运行以执行以下功能之一?我只需要稍微推动一下即可开