我正在尝试从PHP运行ubuntu服务器上的进程,但是当你尝试打开多个选项卡时它似乎挂起,虽然它似乎可以在多个设备上运行。代码是:
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
ini_set('output_buffering', 'off');
ini_set('zlib.output_compression', false);
ini_set('implicit_flush', true);
ob_implicit_flush(true);
while (ob_get_level() > 0)
{
$level = ob_get_level();
ob_end_clean();
if (ob_get_level() == $level) break;
}
if (function_exists('apache_setenv'))
{
apache_setenv('no-gzip', '1');
apache_setenv('dont-vary', '1');
}
$command = 'ping -c 5 8.8.8.8';
$cwd = '/tmp';
$descriptorspec =
[
0 => ['pipe', 'r'],
1 => ['pipe', 'w'],
2 => ['pipe', 'w']
];
$process = proc_open($command, $descriptorspec, $pipes, $cwd);
$proc_details = proc_get_status($process);
$pid = $proc_details['pid'];
$_SESSION['upid'] = $pid;
if (is_resource($process))
{
while ($s = fgets($pipes[1]))
{
print $s;
flush();
}
}
这会产生运行ping命令并一次输出每行结果的预期效果,但是如果我打开另一个选项卡并运行它,第二个选项卡将不会运行,直到第一个选项卡中的命令结束。 / p>
如何阻止等待并让两个标签并行运行?