3

我想知道是否有任何方法可以通过 PHP 与正在运行的控制台程序(最好在 Linux / Debian 上运行)进行通信。我目前正在尝试为一个小的(现有的)控制台 Java 程序创建一个 Web 界面,但我不知道是否有任何方法可以做到这一点。我可以“注入”一段代码,比如说一个远程控制模块,然后使用它通过 PHP“远程控制”脚本吗?(如果现有的 .jar 文件不会被更改/只是注入,没有重新编程,那就太好了)

我很感激每一条建议!

4

2 回答 2

3

如果正在运行的程序没有通信接口,那么你就不能和它通信。但是,如果确实如此,那么答案很大程度上取决于程序如何接收外部输入。

如果程序包含网络监听线程(守护程序),那么您可以使用 CURL 或 PHP 的原始套接字在环回接口上与它通信。

与程序通信的其他方式是共享对文件的访问(PHP 写入文件,Java 读取文件)或通过数据库。

数据库将是最好的选择——它是线程安全的,PHP 和 Java 都具有出色的 MySQL 支持(Java 通过 JDBC)。

但是,如果您不需要实际与正在运行的程序交互,只需要启动/停止/重新启动它,您可以使用 PHP 中的 system() 函数来完成此操作。

于 2012-04-24T17:56:22.407 回答
1

如果 Java 程序只是运行并输出到控制台,那么您可以很容易地做到这一点,如下所示:

$output = system( "java com.yourcompany.package.RunnableClass" ); 
print $output;

假设运行 PHP 的用户当然可以访问 Java 二进制文件,并且您有权访问 JAR 文件。

访问正在运行的程序有点困难。大多数程序默认情况下不会内置此功能(它们也不应该 - 在许多情况下不希望访问随机外部进程)。但是,如果确实如此,那么您的状态很好。如果没有,并且您可以更改 Java 代码,那么您很好。如果没有,那么你可能不走运。

如果是这种情况,另一种好方法可能是查看 Java 代码正在访问哪些资源,以及它是如何访问它们的。然后你可以在 PHP 中编写类似的东西。显然这并不理想,因为您将重新发明轮子,但如果您需要获取数据或任何数据,并且不能使用上述任何方法,它会起作用。

于 2012-04-24T17:50:25.413 回答