使用exec时PHP没有回显数据

使用exec时PHP没有回显数据,php,shell,command,echo,Php,Shell,Command,Echo,我在php中使用exec函数时遇到问题。 我尝试在执行shell cmd后回显参数。我的问题是,在执行shell cmd之后,没有任何参数返回,如果我编辑exec行,一切都正常。代码如下: ... $command = 'avconv -i ' . 'path' . $targetFolder . '/' . $id . '.' . $fileParts['extension'] . ' -vcodec libx264 -r 24 -strict -2 -crf 24 ' . '

我在php中使用exec函数时遇到问题。 我尝试在执行shell cmd后回显参数。我的问题是,在执行shell cmd之后,没有任何参数返回,如果我编辑exec行,一切都正常。代码如下:

    ...
    $command = 'avconv -i ' . 'path' . $targetFolder . '/' . $id . '.' . $fileParts['extension'] . ' -vcodec libx264 -r 24 -strict -2 -crf 24 ' . 'path' . $targetFolder . '/' . $id . '.mp4';
    exec($command);

    echo $var;
    echo $var2;
    echo $var3;
没有数据回响

    ...
    echo $var;
    echo $var2;
    echo $var3;
数据回响了

那么执行shell cmd的问题在哪里呢?我必须调用exec以外的其他函数吗


当我在执行前写回音时,它们也没有回音。shell脚本可以工作。

问题是调用方设置了超时。它在特定时间后自动返回,并且没有发送回显数据

我的解决方案是创建一个单独的脚本,其中包含我作为守护进程执行的转换进程

exec('nohup php ./../cgi/convert.php ' . $input . ' ' . $output . ' > /dev/null 2>&1 &');

您是否尝试过使用echo exec($command)?我不想回显命令的输出,回显的变量是其他变量。这只是为了调试。你在回显时得到的输出可能会有所帮助。我发现这是一个超时问题。当我的php脚本在超时内完成处理时,数据会正确地回显,但当达到超时时(使用avconv video conversion命令),不会返回任何数据。有没有办法把shell命令换成另一个单独处理的脚本?e、 g.使用多线程?一个明显的选择是尝试使用
sleep()
函数在几秒钟后将其唤醒。