PHP脚本调用命令获取实时输出

在写脚本的时候, 经常会有需要调用其他命令. 而在调用一些耗时命令的时候, 我们是需要能够实时掌握脚本进度的.

一般来说, 脚本的进度通常是通过脚本的输出来获得.

如果是一个bash脚本, 那么直接调用命令 A就可以将执行权交出去, 然后命令 A的输出就可以实时显示出来了.

如果是perl脚本, 通过反引号也可以调用命令 A, 但是结果会在命令 A整个结束的时候才能拿到, 此时通过system 命令 A就可以将执行权交给命令 A, 同样, 命令 A的输出也能够实时显示出来.

如果是PHP脚本, 通过反引号调用, 和perl脚本是一样的, 只能在命令A结束是才能拿到返回. 那么PHP脚本如何实时获取命令 A的输出呢? 可以通过监听进程输出的形式:

function real_cmd($command){
    // 执行命令并打开命令的输出指针
    $handle = popen($command, 'r');
    while (!feof($handle)) {
        // 循环获取命令输出
        $data = fgets($handle);
        // 刷新输出缓冲区
        ob_flush();
        flush();
        echo $data;
    }
    // 命令执行结束, 关闭指针
    pclose($handle);
}
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请发表评论。x