脚本不会等待进程结束ssh2_exec和stream_set_blocking

时间:2017-06-13 16:10:25

标签: php libssh2 ssh2-exec

我有两个脚本:

第一个包含以下代码:

<?php
// ...
echo date('H:i:s'), PHP_EOL;
$stream = ssh2_exec($session, 'php my-second-script.php');
stream_set_blocking($stream, true);

$data = "";
while ($buf = fread($stream, 4096)) {
    $data .= $buf;
}

fclose($stream);
echo date('H:i:s'), PHP_EOL;
// ...

第二个只包含以下代码:

<?php
sleep(15);
echo 'OK', PHP_EOL;

我不明白为什么有时当我运行我的第一个脚本时,它会等待第二个脚本运行,但有时候没有。

例如,当它工作时,我有以下输出:

14:16:10
14:16:25

有时候我有这个:

14:17:13
14:17:14

我还阅读了帖子ssh2_exec: wait end of a process to run next,回答的人说“如果没有读取流,命令可能无法正常完成”。有人可以向我解释一下吗?

0 个答案:

没有答案