如何将STDIN管道传输到PHP派生的进程?

如何将STDIN管道传输到PHP派生的进程?,php,stdin,proc,Php,Stdin,Proc,对我的人民 这有点奇怪,但我想知道这是否可能 最终目标是与 mysql mydb < file.sql 但是,我想将STDIN传递给passthru命令 这里的明显好处是,我可以将恢复放在管道的某个地方,一切都很顺利。这里有一个例子 # would be pretty awesome! ssh $remote "msyqldump $config mydb | gzip" | gzip -dc | ./restore 无论如何,我怀疑是否可以使用passthru,但可能在某种程度上使用

对我的人民

这有点奇怪,但我想知道这是否可能

最终目标是与

mysql mydb < file.sql
但是,我想将STDIN传递给
passthru
命令

这里的明显好处是,我可以将
恢复
放在管道的某个地方,一切都很顺利。这里有一个例子

# would be pretty awesome!
ssh $remote "msyqldump $config mydb | gzip" | gzip -dc | ./restore
无论如何,我怀疑是否可以使用
passthru
,但可能在某种程度上使用
proc\u open


作为最后的手段,如果出现无法解决的困境,我会这样做

./restore < file.sql
#!/usr/bin/env php

$cmd = "msyql mydb";
passthru($cmd, $status);
./restore file.sql
#!/usr/bin/env php

$cmd = sprintf("mysql mydb < %s", $argv[1]);
passthru($cmd, $status);
用这样的脚本

./restore < file.sql
#!/usr/bin/env php

$cmd = "msyql mydb";
passthru($cmd, $status);
./restore file.sql
#!/usr/bin/env php

$cmd = sprintf("mysql mydb < %s", $argv[1]);
passthru($cmd, $status);
#/usr/bin/env-php
$cmd=sprintf(“mysql mydb<%s”,$argv[1]);
passthru($cmd,$status);
PHPwnd

/restore

#/usr/bin/env-php
什么!博大精深

原来
passthru
已经这样做了!真了不起

看看吧,朋友们:

gzip.php

#!/usr/bin/env php
<?php

passthru("gzip", $status);

if ($status !== 0) {
  error_log("gzip exited with status %d", $status);
}
输出

hello