通过PHP从命令行运行程序 - 传递命令,而不是每次都重新启动程序

问题描述:

我在我的笔记本电脑上使用本地服务器来通过PHP控制C#程序。基本上我将一个POST传递给我的Web服务器,并将它用作命令行程序的参数。我的代码基本上是这样的:通过PHP从命令行运行程序 - 传递命令,而不是每次都重新启动程序

$parameters = $_POST['parameters']; 
system('C://THEFILEPATH/myprogram.exe ' . $parameters); 

的问题是,这会导致myprogram.exe停止和启动我想的东西传递给它的每一次。由于我的程序的很大一部分是初始化,所以会导致一些不必要的延迟。有没有办法通过PHP来运行myprogram.exe,并将其传递给继续运行的变量,而不是每次都重新启动它?

谢谢!

+2

听起来很危险 - 确保没有人可以向命令行应用程序注入命令。 – Oded 2010-10-03 18:37:03

+0

我刚给你的程序的裸骨头。绝对是一件好事,但请注意,谢谢。 – Ethan 2010-10-03 18:44:29

接受输入并将其写入文件。 您的myprogram应该每隔一段时间读取一次该文件并删除所有读取输入,以使该文件像一个队列一样工作。 如果您想要始终运行您的程序并在运行时收到您的输入,那么您应该考虑实施一个组件来侦听特殊的网络端口。

http://www.php.net/manual/en/function.proc-open.php这提供了双向支持(读取和写入)。不过,我不确定这是如何在Windows上进行测试的。它说,后来有:

Windows兼容性:超过2(错误)描述符是提供给子进程可继承的句柄,但由于Windows的体系结构不文件描述符数字与低级别的句柄相关联时,子进程没有(还)有访问这些句柄的手段。 Stdin,stdout和stderr按预期工作。

所以你应该可以像写文件一样写入它。