【问题标题】:Proc_open read and parse output - real-timeProc_open 读取和解析输出 - 实时
【发布时间】:2011-06-25 11:59:01
【问题描述】:

当我使用 stderr 输出的 file.txt 路径运行 proc_open 时,该文件每隔几秒钟就会使用我正在运行的 proc_open 程序的输出(即 ffmpeg)不断更新。我只想将该输出重定向到可以读取和解析的 phpfile,但是在进程运行时(因此每隔几秒钟发送一次信息),以便我可以更新数据库。这可能吗? 我已经在谷歌上搜索了几个小时,所以如果有任何专家真正知道如何使用这个功能并且有这方面的经验,我将非常感谢任何帮助。

这会将输出放入文本文档中。如果我更改为 2 => array("pipe","w") 并且回显输出仅在进程结束时出现在我的屏幕上

$descriptorspec = array(
0 => array("pipe","r"),
1 => array("pipe","w"),
2 => array("file","/home/g/Desktop/test.txt","a")
) ;

$cwd = './' ;
// open process /bin/sh
$process = proc_open("/usr/local/bin/ffmpeg -i /home/g/Desktop/vid.wmv /home/g/Desktop/vid.flv", $descriptorspec, $pipes, $cwd) ;

【问题讨论】:

    标签: php


    【解决方案1】:
    1. 你可以像这样运行 ffmpeg:

      ffmpeg ..optinons... 2>&1 | php script.php
      

    但是你可以在 ffmpeg 的输入 STDERR 和 STDOUT 中输入

    1. 第二个正常决定:

      <?
      $cmd = 'ffmpeg -i /home/azat/Desktop/src.avi -y /home/azat/Desktop/dst.avi';
      $pipes = array();
      $descriptors = array(2 => array('file', '/tmp/atest.log', 'a'));
      
      $p = proc_open($cmd, $descriptors, $pipes);
      
      while (true) {
              sleep(1);
      
              $status = proc_get_status($p);
              if (!$status['running']) break;
      
              echo "STEEL RUN\n";
              // some manupulations with "/tmp/atest.log"
      }
      

    你也可以看到这个class - 它是执行进程的包装器

    【讨论】:

    • ffmpeg ..optinons... 2>&1 | php script.php 如果我这样做,php 脚本最后只会执行一次。我想继续发送信息,以便创建进度条。您的第二个建议将写入日志对吗?我希望能够定期解析该信息并将其发送到数据库。这可以做到吗?还有那个类是做什么的?
    • 间隔 - 是sleep(1);。改变它为你的价值。类是做同样的事情,甚至更多(例如见loop方法)
    • 关于 "ffmpeg ..optinons... 2>&1 | php script.php" 你错了!当它来自 ffmpeg 时,它将把 ffmpeg 的输出发送到脚本
    • 好吧,我尝试这样做并将插入语句放在 script.php 中,并且只有一个数据库条目。我期待着几个。你用什么变量来引用进入 script.php 的 ffmpeg 数据?
    • $h = fopen('php://stdin', 'r'); $str = fgets($h); fclose($h); $str - 你的字符串
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2012-11-11
    相关资源
    最近更新 更多