使用php访问后台应用程序stdin / stdout

时间:2010-10-07 00:54:18

标签: php

我希望php在后台执行一个unix应用程序,并且可以访问它的stdin / stdout,类似于python中子进程的方式......这可能吗?如果是这样的话?

2 个答案:

答案 0 :(得分:0)

您绝对可以执行外部程序 http://php.net/manual/en/function.exec.php

您可以使用PHP的CLI接口的一个部分来实现三个“流”,您可以使用这些“流”或多或少地与从fopen()返回的文件资源进行交互。流用字符串标识:

php:// stdin(阅读) php:// stdout(写) php:// stderr(写)

使用PHP 4.3.0+ CLI二进制文件,这三个流自动可用,分别用常量STDIN,STDOUT和STDERR标识。以下是我如何使用STDOUT修复上述脚本以使其在Windows上正常运行:

<?php
$i = 0;
while ( $i < 10 ) {
   // Write some output
   fwrite(STDOUT, $i."\n");
   sleep(1);
   $i++;
}
?>

http://articles.sitepoint.com/article/php-command-line-1

<强> PK

答案 1 :(得分:0)

尝试这样的事情:exec('unix_app | python_script > /dev/null &');

编辑:

再次阅读你的问题并意识到你不想管道进入Python脚本。如果您在后台启动该过程,您的PHP脚本将继续执行其余部分,它将无法接收STDIN / OUT。您可以将它管道传输到不同的PHP脚本中,就像上面的示例一样,然后您将再次访问STDIN。