所以 - 我正在使用proc_open()
来执行ssh
,rsync
,scp
等程序来执行备份任务。
但是,在某些情况下,这些进程可能会变为交互式并需要输入,例如,当SSH的公钥验证失败时,它会要求输入密码。这是一个主要问题,因为让备份作业挂起是不可能的,更糟糕的是,不会产生错误。
如何彻底摆脱我正在运行的流程中的交互性?如果进程突然需要输入,我想立即解救并生成错误。 通用超时不是解决方案,因为备份过程在正常操作中可能需要很长时间。 我真的需要一个针对这个问题的通用解决方案。
谢谢!
答案 0 :(得分:1)
只需将空文件传递为stdin:
$r = proc_open('cat', [fopen('/dev/null', 'rb')], $p);
proc_close($r)
这个脚本在几毫秒内结束。