这就是我想要做的:
$output = '';
$stream = popen("some-long-running-command 2>&1", 'r');
while (!feof($stream)) {
$meta = stream_get_meta_data($stream);
if ($meta['unread_bytes'] > 0) {
$line = fgets($stream);
$output .= $line;
}
echo ".";
}
$code = pclose($stream);
看起来这段代码不正确,因为它在调用stream_get_meta_data()
. 检查流是否有一些数据要读取的正确方法是什么?这里的重点是避免锁定在fgets()
.