Случается, что мне нужно отслеживать статус файла через ssh по php (используя phpunit). Но когда я пытаюсь запустить этот код:PHP: Тупик через использование proc_open ("ssh hostname 'tail -F ~ somefile'")
$descriptorspec = array(
0 => array('pipe', 'r'),
1 => array('pipe', 'w'),
2 => array('pipe', 'w'),
);
$cmd = "ssh hostname 'tail -F ~/test.file'";
$proc = proc_open($cmd, $descriptorspec, $pipes, null);
$str = fgets($pipes[1]);
echo $str;
if (!fclose($pipes[0])) {
throw new Exception("Can't close pipe 0");
}
if (!fclose($pipes[1])) {
throw new Exception("pipe 1");
}
if (!fclose($pipes[2])) {
throw new Exception("pipe 2");
}
$res = proc_close($proc);
ничего не происходит - нет выхода, и я думаю, тупиковая exucuted: скрипт не выходит. Есть идеи? или предложения?
ty для ответа. По-моему, я виноват в том, что я думал, что «proc_open» выполняет команду с чем-то вроде демонализации этой команды. – user2968022
Для этого вам, вероятно, придется делать что-то вроде «nohup». Но даже тогда я ожидаю, что с OpenSSH или phpseclib оба сразу вернутся, не давая вам никакого выхода. – neubert
чувак прекратил публиковать это. Я искал поисковую систему для решения, и все, что я вижу, тот же самый тупой, скопированный и вставленный ответ .. это не работает повсюду. –