PHP proc_open - 如果进程需要输入,则退出

时间:2013-01-22 15:29:23

标签: php proc-open

所以 - 我正在使用proc_open()来执行sshrsyncscp等程序来执行备份任务。

但是,在某些情况下,这些进程可能会变为交互式并需要输入,例如,当SSH的公钥验证失败时,它会要求输入密码。这是一个主要问题,因为让备份作业挂起是不可能的,更糟糕​​的是,不会产生错误。

如何彻底摆脱我正在运行的流程中的交互性?如果进程突然需要输入,我想立即解救并生成错误。 通用超时不是解决方案,因为备份过程在正常操作中可能需要很长时间。 我真的需要一个针对这个问题的通用解决方案。

谢谢!

1 个答案:

答案 0 :(得分:1)

只需将空文件传递为stdin:

 $r = proc_open('cat', [fopen('/dev/null', 'rb')], $p);
 proc_close($r)

这个脚本在几毫秒内结束。