我试图将所有输出行从控制台保存到代码无法正常工作的文件,因为它目前所做的是
从控制台获取最后一行并将其写入文件,并且文件未更新,直到我关闭控制台正在运行的过程 -
$start = exec("cd /ot/forgottenserver && ./tfs", $output);
$file = fopen("/var/www/public/stream.html", "a+");
while ($start)
{
fwrite($file, $start."\n");
}
fclose($file);
每次从控制台获取新行时我都需要编写,并在进程执行时更新文件。
答案 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);
}