接口与PHP运行的应用程序?(Interface with running applications

2019-06-25 08:09发布

我想知道是否有任何方式运行控制台程序通过PHP(最好是在Linux / Debian的运行)进行通信。 目前我正在试图创建一个小(现有)控制台的Java程序一个webinterface,我不知道是否有什么办法可以做到这一点。 我能“注入”的一段代码,可以说,远程控制模块,然后用这个“远程控制”通过PHP脚本? (这将是巨大的,如果现有的.jar文件不会改变/只是打针,不重新编程)

我对每一条建议的感谢!

Answer 1:

如果正在运行的程序没有任何通讯接口,那么你就不能与它通信。 但是,如果是的话,那么答案非常依赖于程序是如何接收外部输入。

如果程序包含一个网络监听线程(守护进程),那么你可以用它使用卷曲或原始套接字从PHP loopback接口进行通信。

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

该数据库将是最好的选择 - 它是线程安全的PHP和Java具有优良的MySQL支持(Java通过JDBC)。

但如果你并不需要实际与正在运行的程序接口只需要仅仅在PHP启动/停止/重新启动它,您可以与系统做到这一点()函数。



Answer 2:

如果Java程序只运行并输出到控制台,那么你就可以做到这一点很轻松了,这样的事情:

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

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

访问正在运行的程序是有点难度。 大多数程序不会有这个建在默认情况下(也不应该 - 在许多情况下,给访问随机外部进程是不可取的)。 如果是这样,不过,你是在良好的状态。 如果没有,你可以改变Java代码,那么你是好。 如果没有,那么你可能是出于运气。

如果是这样的话,另一个很好的方法可能是看到什么资源Java代码正在访问,以及它是如何访问它们。 然后,你可以用PHP编写类似的东西。 显然,这不是理想的,因为你会被重新发明轮子,但如果你需要获取数据或不管它是什么,而不能使用任何方法的上面,它会工作。



文章来源: Interface with running applications in PHP?