gpt4 book ai didi

PHP exec - 在进度期间逐行回显输出

转载 作者:行者123 更新时间:2023-12-04 23:17:01 24 4
gpt4 key购买 nike

我正在尝试找到一种方法来回显 exec 调用的输出,然后在进程运行时将其刷新到屏幕上。我编写了一个简单的 PHP 脚本,它接受文件上传,然后在文件类型不合适时使用 FFMPEG 转换文件。我在 Windows 机器上执行此操作。目前我的命令如下所示:

$cmd = "ffmpeg.exe -i ..\..\uploads\\".$filename." ..\..\uploads\\".$filename.".m4v 2>&1";
exec( $cmd, $output);

我需要这样的东西:
while( $output ) {
print_r( $output);
ob_flush(); flush();
}

我读过关于使用 ob_flush()flush()清除输出缓冲区,但我只有在该过程完成后才能获得输出。该命令完美运行,只是在转换时不会更新页面。我想要一些输出,以便人们知道发生了什么。

我已经设定了时间
set_time_limit( 10 * 60 ); //5 minute time out

如果有人能把我引向正确的方向,那就太好了。我查看了许多接近 Stackoverflow 的解决方案,但似乎都没有奏效。

最佳答案

由于 exec 调用是阻塞调用,因此您无法使用缓冲区来获取状态。

相反,您可以将系统调用中的输出重定向到日志文件。让客户端向服务器查询进度更新,在这种情况下,服务器可以解析日志文件的最后几行以获取有关当前进度的信息并将其发送回客户端。

关于PHP exec - 在进度期间逐行回显输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22766418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com