与在 PHP 中运行的应用程序的接口


Interface with running applications in PHP?

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

我感谢每一条建议!

如果正在运行的程序没有通信接口,则无法与之通信。但是,如果是这样,那么答案在很大程度上取决于程序如何接收外部输入。

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

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

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

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

如果 Java 程序只是运行并输出到控制台,那么您可以轻松完成,如下所示:

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

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

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

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