来自 php 的 bash 脚本 运行 的进度条
Progress bar for a bash script running from php
在 Whosebug 上的人们的宝贵帮助下,我设法 运行 来自 php 的 bash 脚本。现在一切 运行ning 都很好,但由于脚本需要几分钟才能结束,我希望看到进展。在 bash 脚本中有一些输出 error/success 消息的 printf 命令。
作为 php 的新手,我假设这些消息会在 bash 脚本中执行时出现。但是尽管脚本已完成,但我没有得到任何输出。我可以看到创建的文件并确定脚本已完成,但我在浏览器中看不到 php 的任何输出。
脚本还在运行ning时如何查看进度?为什么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);
在 Whosebug 上的人们的宝贵帮助下,我设法 运行 来自 php 的 bash 脚本。现在一切 运行ning 都很好,但由于脚本需要几分钟才能结束,我希望看到进展。在 bash 脚本中有一些输出 error/success 消息的 printf 命令。
作为 php 的新手,我假设这些消息会在 bash 脚本中执行时出现。但是尽管脚本已完成,但我没有得到任何输出。我可以看到创建的文件并确定脚本已完成,但我在浏览器中看不到 php 的任何输出。
脚本还在运行ning时如何查看进度?为什么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);