printf
除非换行符在格式字符串中,为什么在调用后不刷新?这是POSIX的行为吗?我怎么可能printf
每次都立即冲洗?
例如,如果我有一个echo语句,则无法保证浏览器可能立即显示它,可能会一次显示几十个echo语句,并且可能会等到整个页面完成后再显示任何内容.
有没有办法让每个echo在执行时出现在浏览器中?
我尝试使用shell_exec以与在终端中显示的方式(同时)相似的方式在网页上输出简单的ping命令; 但它只在完成执行后显示,而我需要它显示在终端上显示,
我的代码是
<?php
$i= shell_exec("ping -c 4 google.com");
echo "<pre> $i <pre>";
?>
Run Code Online (Sandbox Code Playgroud)
它正在等待一段时间并将整个东西倾倒在一个镜头上...... PHP可以识别每行的输出并将其显示在网页上
编辑
我也试过这个
<?php
$proc = popen("ping -c 4 google.com", 'r');
echo '<pre>';
while (!feof($proc)) {
echo fread($proc, 4096);
}
echo '</pre>';
?>
Run Code Online (Sandbox Code Playgroud)
但我仍然得到相同的结果..
编辑
当我试图在终端中执行这个PHP代码时,(php test.php)它正常工作,就像我们直接在服务器上执行ping一样.但在网页上它仍然是相同的.
我试图在 Tkinter python 中创建一个 GUI。我想将工具的输出显示到我的 Tkinter 界面。该工具在命令行中运行良好,但它是一个连续扫描器。有点像一个连续的 ping(我的意思是 Linux 中没有选项的 ping 命令)。
现在的问题是因为 ping 的输出永远不会完成,因此我无法在 Tkinter 中打印输出。它还使我的应用程序冻结。几秒钟后我也无法停止命令以显示输出。 在 PHP 中使用实时输出运行进程 我发现上面的链接对 php 很有帮助,但是如何在 python 中转换此代码:
这是我想在 tkinter 框架上显示的一些示例代码
#!/usr....
import subprocess
x = subprocess.call(["ping", "127.0.0.1"])
print x
Run Code Online (Sandbox Code Playgroud)
这在命令行上效果很好,但我没有在 tkinter 界面上获得输出。
注:这篇文章有与此不同岗位,其接受的答案每次只读取每一行。
我必须在服务器端对 3D 模型进行切片以进行 3D 打印,该过程将花费一些时间。所以我要给用户展示进程,我用redis来存储进程。我想每 0.5 秒刷新一次进程。比如sleep 0.5秒,读取pip中的所有内容,每次都处理。
现在我已经尝试了以下两个,第一个将保持直到完成。第二种使用while不是妥当,它会一直写redis会导致客户端读取进程请求一直拖到最后。
我试过这两个:
第一个将保持直到命令完成。
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w") //here curaengine log all the info into stderror
);
$command = './CuraEngine slice -p -j ' . $fdmprinterpath . ' -j ' . $configpath . ' -o ' . $gcodepath . ' -l ' . $tempstlpath;
$cwd = '/usr/local/curaengine';
$process = proc_open($command, $descriptorspec, $pipes, $cwd);
if(is_resource($process))
{
print stream_get_contents($pipes[1]); //This will …
Run Code Online (Sandbox Code Playgroud) 我有一组 bash 和 Perl 脚本
这在终端上运行良好。现在,我的客户请求此流程的 Web 界面。
例如,某些页面上的“创建新包”按钮将一一调用上述步骤,并将输出作为脚本回显返回给用户,而不是在整个脚本执行时。
是否可以将 bash 脚本的即时输出发送到通过程序执行函数(系统、exec、passthru ...或任何其他适合此流程的东西)调用它的网页或 php 脚本?
优雅为何要这么做?
在做这样的事情时我应该采取哪些安全预防措施(如果可能的话)?
编辑 经过一番搜索,我找到了部分解决方案,但仍然无法正常工作:
$cmd = 'cat ./password.txt|sudo -S ./setup.sh ';
$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
2 => array("pipe", "w") // stderr is a pipe that the child …
Run Code Online (Sandbox Code Playgroud) 我正在使用PHP的exec()
功能在PHP中运行外部脚本。我一直在寻找各种选项来创建进度条。我可以通过AJAX创建普通的旋转式装载机,但是无法达到进度条。有什么办法吗?
php ×5
bash ×1
c ×1
cmd ×1
exec ×1
flush ×1
javascript ×1
nonblocking ×1
perl ×1
pipe ×1
printf ×1
process ×1
python ×1
python-2.7 ×1
python-3.x ×1
real-time ×1
shell ×1
stream ×1
tkinter ×1