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);
}
上一篇:设计模式,门面模式,c++实现,委托,c++实现委托


下一篇:TypeError: Cannot handle this data type: (1, 1, 6), |u1