Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在PHP中运行实时输出的进程

在PHP中运行实时输出的进程
EN

Stack Overflow用户
提问于 2009-08-14 20:23:43
回答 8查看 92K关注 0票数 75

我正在尝试在网页上运行一个进程,该进程将实时返回其输出。例如,如果我运行'ping‘进程,它应该在每次返回新行时更新我的页面(现在,当我使用exec(command,output)时,我被迫使用-c选项,并等待进程结束才能看到网页上的输出)。在php中可以做到这一点吗?

我也在想,当有人离开页面时,什么才是终止这种进程的正确方法。在“ping”进程的情况下,我仍然能够在系统监视器中看到正在运行的进程(这是有意义的)。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-05-26 19:48:58

这对我很有效:

代码语言:javascript
运行
AI代码解释
复制
$cmd = "ping 127.0.0.1";

$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 will write to
);
flush();
$process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());
echo "<pre>";
if (is_resource($process)) {
    while ($s = fgets($pipes[1])) {
        print $s;
        flush();
    }
}
echo "</pre>";
票数 100
EN

Stack Overflow用户

发布于 2011-05-10 21:30:49

这是显示shell命令实时输出的一种很好的方式:

代码语言:javascript
运行
AI代码解释
复制
<?php
header("Content-type: text/plain");

// tell php to automatically flush after every output
// including lines of output produced by shell commands
disable_ob();

$command = 'rsync -avz /your/directory1 /your/directory2';
system($command);

您将需要此函数来防止输出缓冲:

代码语言:javascript
运行
AI代码解释
复制
function disable_ob() {
    // Turn off output buffering
    ini_set('output_buffering', 'off');
    // Turn off PHP output compression
    ini_set('zlib.output_compression', false);
    // Implicitly flush the buffer(s)
    ini_set('implicit_flush', true);
    ob_implicit_flush(true);
    // Clear, and turn off output buffering
    while (ob_get_level() > 0) {
        // Get the curent level
        $level = ob_get_level();
        // End the buffering
        ob_end_clean();
        // If the current level has not changed, abort
        if (ob_get_level() == $level) break;
    }
    // Disable apache output buffering/compression
    if (function_exists('apache_setenv')) {
        apache_setenv('no-gzip', '1');
        apache_setenv('dont-vary', '1');
    }
}

它并不是在我尝试过的每一台服务器上都能工作,我希望我能提供一些建议,告诉你在php配置中应该寻找什么,以确定你是否应该竭尽全力让这种行为在你的服务器上工作!还有人知道吗?

下面是一个用普通PHP编写的虚拟示例:

代码语言:javascript
运行
AI代码解释
复制
<?php
header("Content-type: text/plain");

disable_ob();

for($i=0;$i<10;$i++) 
{
    echo $i . "\n";
    usleep(300000);
}

我希望这对其他用谷歌搜索过的人有所帮助。

票数 37
EN

Stack Overflow用户

发布于 2017-09-07 16:37:51

已检查所有答案,均不起作用...

找到解决方案Here

它可以在windows上工作(我认为这个答案对用户在那里搜索很有帮助)

代码语言:javascript
运行
AI代码解释
复制
<?php
    $a = popen('ping www.google.com', 'r'); 
    
    while($b = fgets($a, 2048)) { 
        echo $b."<br>\n"; 
        ob_flush();flush(); 
    }

    pclose($a); 
?>
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1281140

复制
相关文章
python 从subprocess运行的子进程中实时获取输出
shell =false 意思是command 使用的不是linux shell指令,如果要用shell 指令如ls 要将false 变成true, 通过指定stderr=subprocess.STDOUT,将子程序的标准错误输出重定向到了标准输出,以使我们可以直接从标准输出中同时获取标准输出和标准错误的信息。 p.poll() 返回子进程的返回值,如果为None 表示 c++子进程还未结束. p.stdout.readline() 从 c++的标准输出里获取一行.
多凡
2020/02/11
10.8K0
PHP实时输出(一遍运行一遍输出)
示例 public function test(){ realTimeOutputPrepare(); echo '6666'.PHP_EOL; sleep(3); realTimeOutput('9999'); } 调用的方法如下 /**实时输出内容-步骤一 * 实时输出内容准备(设置头部) * 在你需要实时输出的方法最前面调用 */ function realTimeOutputPrepare(){ header('X-Accel-Buffering: n
超级小可爱
2023/02/22
1.3K0
在bash中检测进程是否正在运行
比如我们启动了一个这样的进程python -m SimpleHTTPServer 8000,我们想检测这个进程是否存在,可以这样。
技术小黑屋
2018/09/04
3.7K0
PHP边运行边输出运行结果的实现方法
在开发过程中,经常会需要做批量处理,例如数据同步或格式转换时往往涉及大批量的数据处理,由于数据量大,数据里往往存在各种的差异,导致运行过程容易出问题,所以能在运行过程中实时输出每条记录运行的情况(成功或失败,失败的原因及引发异常的原始数据信息)是非常有助于排查问题的,我这里分享两个自己做了简单封装的方法,我自己觉得很好用,希望也对你们有用。
风柏杨4711
2021/11/03
8670
在WordPress 的文章或页面中运行PHP 代码
如果你在编辑器中输入PHP 代码,默认的话WordPress 不会为你执行这段代码的——只会文本方式输出。Tutsplus 上有一篇文章以插件的方式告知我们实现在WordPress 的文章或页面中运行PHP 代码的方法,下面介绍下。 原理小介绍 懂php 的都知道,PHP中载入其他PHP文件可以用include() 或者 require() 函数,因此为了实现在WordPress 的文章或页面中运行PHP 代码,我们可以将打算运行的代码写入一个额外的PHP 文件中,放在某个目录下,通过某种机制调用。英文原文
Jeff
2018/01/19
4.7K0
在WordPress 的文章或页面中运行PHP 代码
分析运行中的 Python 进程
在 Java 中打印当前线程的方法栈,可以用 kill -3 命令向 JVM 发送一个 OS 信号,JVM 捕捉以后会自动 dump 出来;当然,也可以直接使用 jstack 工具完成,这些方法好几年前我在这篇性能分析的文章中介绍过。这样的需求可以说很常见,比如定位死锁,定位一个不工作的线程到底卡在哪里,或者定位为什么 CPU 居高不下等等问题。
四火
2022/07/19
9020
PHP中的输出缓冲控制
在 PHP 中,我们直接进行 echo 、 或者 print_r 的时候,输出的内容就会直接打印出来。但是,在某些情况下,我们并不想直接打印,这个时候就可以使用输出缓冲控制来进行输出打印的控制。当然,这一套功能并不仅限出针对打印的内容,我们还可以做其它一些操作,这个我们放到最后再说。
硬核项目经理
2020/08/10
6.4K0
[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程
​查看进程回忆上次内容 上次先ctrl + z 挂起进程 然后运行 bg​编辑程序继续跑起来而且不断输出到标准输出流甚至连ctrl + c 都无法结束进程了这可怎么办呢?只能新开一个终端想办法查询进程搜索 debian进程查询​编辑找到具体方法进程具体方法​编辑动手试试 新开一个终端 运行ps -elf​编辑 查看到两条进程信息 看起来上一个zsh就是pid为281的进程记住281这个pid现在我想把这个278进程干掉怎么办?搜索一下搜索​编辑搜索结果​编辑杀意 搜到了一个可怕的程序
oeasy
2022/12/24
9100
[oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程
Python 异步: 在非阻塞子进程中运行命令(19)
asyncio.subprocess.Process 类提供了由 asyncio 运行的子进程的表示。它在 asyncio 程序中提供子进程的句柄,允许对其执行操作,例如等待和终止它。
数据科学工厂
2023/03/21
3.2K0
Python 异步: 在非阻塞子进程中运行命令(19)
在centos操作系统中查看所有正在运行的进程
在centos操作系统中查看所有正在运行的进程,你可以使用ps命令。它能显示当前运行中进程的相关信息,包括进程的PID。Linux和UNIX都支持ps命令,显示所有运行中进程的相关信息。ps命令能提供一份当前进程的快照。如果你想状态可以自动刷新,可以使用top命令。
用户1685462
2021/07/30
4.5K0
实时日志:腾讯云 Serverless Python 运行时支持日志实时输出
开发前言 作为一名 Serverless 架构的重度使用者,我一直对调试感到恐慌:经常在测试接口的时候,会通过网页/PostMan 触发函数,然后没得到预期的结果,我就只能傻乎乎的一直点控制台的日志,等待他能早点出来结果,看看为啥和我预期结果不同。 虽然说 10S,20S 的日志输出还能接受,但是在调试过程中,真的就是噩梦,一直在想有什么方法可以实现实时日志,我触发函数,就马上能看到,无论是控制台/API 网关还是 COS 触发器,只要被触发,我就能实时看到日志,这将会对我写代码,调试产生重大,超级重
腾讯云serverless团队
2020/05/13
1.1K0
在 Node.js 中通过子进程操作标准输入/输出 [每日前端夜话0x2A]
在本中,我们在 Node.js 中把 shell 命令作为子进程运行。然后异步读取这些进程的 stdout 并写入其 stdin。
疯狂的技术宅
2019/03/27
3.4K0
在 Node.js 中通过子进程操作标准输入/输出 [每日前端夜话0x2A]
如何在父进程中读取子(外部)进程的标准输出和标准错误输出结果
        最近接手一个小项目,要求使用谷歌的aapt.exe获取apk软件包中的信息。依稀记得去年年中时,有个同事也问过我如何获取被调用进程的输出结果,当时还研究了一番,只是没有做整理。今天花点时间,将该方法整理成文。(转载请指明出于breaksoftware的csdn博客)
方亮
2019/01/16
4.1K0
nohup命令–linux后台运行程序并实时查看输出
前言 前台运行程序十分的不稳定,当xshell断掉之后,程序也就断掉了。然后同学向我推荐了nohup命令,于是我就非常愉快的使用起来啦~
kirin
2021/03/15
5.3K0
如何让Linux进程在固定堆运行
我们知道程序在每次运行的时候地址都是不一样的,linux之所以有这样的设计也许是为了安全性考虑,不利于黑客的攻击。
刘盼
2021/03/23
2.1K0
Python 强制杀死运行中的多进程脚本
拉灯的小手
2023/06/20
2940
配置在WebLogic Server中运行CGI程序,提供PHP与Perl的示例
配置在WebLogic Server中运行CGI程序,提供PHP与Perl的示例 相关的详细说明文档可以看这里 http://e-docs.bea.com/wls/docs81/webapp/components.html#100540 其实跟Tomcat里支持cgi没有什么两样,在WebLogic Server中也是通过一个CGIServlet来mapping过去的。 把CGIServlet也反编译回来了,全打包在里面,有兴趣的也可以翻翻源码:)
阿敏总司令
2019/02/28
1.6K0
点击加载更多

相似问题

在Python线程中运行子进程,实时读取输出

11

在php中运行shell命令并实时输出

31

如何运行具有实时输出的python子进程?

111

使用php运行ssh的实时输出

22

如何在go中打印运行子进程的实时输出?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档