сервер — запускать команды proc_open () параллельно — PHP Linux

Я пытаюсь запустить процесс на сервере Ubuntu из PHP, но кажется, что он зависает при попытке открыть несколько вкладок, хотя, похоже, он работает на нескольких устройствах. Код является:

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 и вывода результата каждую строку за раз, но если я открою другую вкладку и запусту ее, вторая вкладка не будет запущена, пока команда в первой не будет завершена.

Как я могу предотвратить ожидание и чтобы обе вкладки работали параллельно?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]