繁体   English   中英

从php运行的bash脚本的进度栏

[英]Progress bar for a bash script running from php

在StackOverflow上人们的无价帮助下,我设法从php运行bash脚本。 现在一切运行正常,但是由于脚本需要花费几分钟才能结束,所以我希望看到进度。 在bash脚本中,有一些printf命令可输出错误/成功消息。

作为php中的新手,我假设这些消息将在bash脚本中执行时出现。 但是尽管脚本完成了,但我没有任何输出。 我可以看到创建的文件,并且可以确定脚本已完成,但是在浏览器中看不到php的任何输出。

脚本仍在运行时如何检查进度? 为什么PHP似乎没有结束?

以下是php脚本。

<?php

echo "<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
      <html xmlns=http://www.w3.org/1999/xhtml>
      <head>
      <meta http-equiv=Content-Type content=text/html; charset=UTF-8 />
      <title>Title</title>
      <link href=../style.css rel=stylesheet type=text/css>
      </head>
      <body topmargin=0 leftmargin=0>";
echo '<font color=blue>';

echo '------------------------------------------------------------- <br>';
echo 'Inicio de la generación manual de mapas de olas de calor<br>';
echo 'Este proceso tarda varios minutos<br>';
echo '-------------------------------------------------------------<br>';
echo date('h:i:s') . "\n";
$output = shell_exec('/home/meteo/www/RAMS/olas/generar-mapas.bash');
echo "<pre>".$output."</pre>";
echo '</font>';
echo '</body>';
echo '</html>';

?>

我已经在论坛上阅读了一些有关php,Ajax和jQuery的帖子,以了解进度条,但我只知道一些非常基本的php。 是否有针对php新手的简单解决方案? 谢谢你的帮助

shell_exec()阻塞直到子进程完成,请改用popen()

$p = popen('/home/meteo/www/RAMS/olas/generar-mapas.bash', 'r');
while(!feof($p)) {
    echo fgets($p);
    ob_flush();
    flush();
}
pclose($p);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM