我很高兴使用proc_open
将数据导入另一个PHP进程。像这个
$spec = array (
0 => array('pipe', 'r'),
// I don't need output pipes
);
$cmd = 'php -f another.php >out.log 2>err.log';
$process = proc_open( $cmd, $spec, $pipes );
fwrite( $pipes[0], 'hello world');
fclose( $pipes[0] );
proc_close($process);
在另一个PHP文件中,我用回显STDIN
echo file_get_contents('php://stdin');
这很好,但当我将其作为背景时就不行了。只需将$cmd
与&
相加,我就不会从STDIN中得到任何东西。我一定错过了一些基本的东西。
fgets(STDIN)
也会失败
有什么想法吗?
您不能写入后台进程的STDIN(至少,不是以正常方式)。
这个关于服务器故障的问题可能会让您了解如何解决这个问题。
无关:你说不需要规范中的输出,但你在$cmd
中指定了它们;你可以这样写$spec
:
$spec = array (
0 => array('pipe', 'r'),
1 => array('file', 'out.log', 'w'), // or 'a' to append
2 => array('file', 'err.log', 'w'),
);