MVH
Новичок
Неблокирующее чтение процесса с возможностью посыла команд
Помогите, надо из php в Fedora вызвать через шелл программу для перекодирования видео (ffmpeg), получать от неё данные в цикле и при необходимости прервать её выполнение. Ограничений в хостинге нет.
Пробовал с proc_open - не получается:
P.S.: в процессах не силён, поэтому просьба сильно не пинать.
Помогите, надо из php в Fedora вызвать через шелл программу для перекодирования видео (ffmpeg), получать от неё данные в цикле и при необходимости прервать её выполнение. Ограничений в хостинге нет.
Пробовал с proc_open - не получается:
PHP:
$descriptorspec = array(
0 => array("pipe", "r"), // stdin это канал, из которого процесс будет читать
1 => array("pipe", "w"), // stdout это канал, в который процесс будет записывать
2 => array("pipe", "w"), // stderr это файл для записи ошибок процессом
);
$process = proc_open('/bin/sh', $descriptorspec, $pipes);
if (is_resource($process))
{
stream_set_blocking($pipes[1], false);
stream_set_blocking($pipes[2], false);
$from = escapeshellarg('video.mov');
$to = escapeshellarg('video.wmv');
//загвоздка в том, что эта команда начнёт выполняться только после fclose($pipes[0]), но тогда я не смогу послать ей другую команду
fwrite($pipes[0], "ffmpeg -y -i $from $to");
while (true)
{
if (какое-то действие)
{
fwrite($pipes[0], "q");
break;
}
}
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
}

