PHP保存控制台输出

时间:2014-02-23 19:40:10

标签: php exec output

我试图将所有输出行从控制台保存到代码无法正常工作的文件,因为它目前所做的是

从控制台获取最后一行并将其写入文件,并且文件未更新,直到我关闭控制台正在运行的过程 -

    $start = exec("cd /ot/forgottenserver && ./tfs", $output);

    $file = fopen("/var/www/public/stream.html", "a+");

    while ($start) 
    {
    fwrite($file, $start."\n");
    }

    fclose($file);

每次从控制台获取新行时我都需要编写,并在进程执行时更新文件。

1 个答案:

答案 0 :(得分:1)

使用popen代替exec。与exec(执行命令并在处理完成后仅返回)相反,popen返回指向该进程的指针,您可以使用该指针来读取输出

$h = popen('cd /ot/forgottenserver && ./tfs', 'r');

if ($h) {
    while (!feof($h)) {
        $buf = fread($h, 1024);

        $fileHandle = fopen("/var/www/public/stream.html", "a+");

        if ($fileHandle) {
            fwrite($fileHandle, $buf);
            fclose($fileHandle);
        }
    }

    pclose($h);
}