我想知道是否有任何方式运行控制台程序通过PHP(最好是在Linux / Debian的运行)进行通信。 目前我正在试图创建一个小(现有)控制台的Java程序一个webinterface,我不知道是否有什么办法可以做到这一点。 我能“注入”的一段代码,可以说,远程控制模块,然后用这个“远程控制”通过PHP脚本? (这将是巨大的,如果现有的.jar文件不会改变/只是打针,不重新编程)
我对每一条建议的感谢!
我想知道是否有任何方式运行控制台程序通过PHP(最好是在Linux / Debian的运行)进行通信。 目前我正在试图创建一个小(现有)控制台的Java程序一个webinterface,我不知道是否有什么办法可以做到这一点。 我能“注入”的一段代码,可以说,远程控制模块,然后用这个“远程控制”通过PHP脚本? (这将是巨大的,如果现有的.jar文件不会改变/只是打针,不重新编程)
我对每一条建议的感谢!
如果正在运行的程序没有任何通讯接口,那么你就不能与它通信。 但是,如果是的话,那么答案非常依赖于程序是如何接收外部输入。
如果程序包含一个网络监听线程(守护进程),那么你可以用它使用卷曲或原始套接字从PHP loopback接口进行通信。
与程序通信的其他方式将共享访问文件(PHP写文件,Java的读取它),或者通过数据库。
该数据库将是最好的选择 - 它是线程安全的PHP和Java具有优良的MySQL支持(Java通过JDBC)。
但如果你并不需要实际与正在运行的程序接口只需要仅仅在PHP启动/停止/重新启动它,您可以与系统做到这一点()函数。
如果Java程序只运行并输出到控制台,那么你就可以做到这一点很轻松了,这样的事情:
$output = system( "java com.yourcompany.package.RunnableClass" );
print $output;
假设谁运行PHP的用户可以访问,当然Java二进制,并且您有权限访问的JAR文件。
访问正在运行的程序是有点难度。 大多数程序不会有这个建在默认情况下(也不应该 - 在许多情况下,给访问随机外部进程是不可取的)。 如果是这样,不过,你是在良好的状态。 如果没有,你可以改变Java代码,那么你是好。 如果没有,那么你可能是出于运气。
如果是这样的话,另一个很好的方法可能是看到什么资源Java代码正在访问,以及它是如何访问它们。 然后,你可以用PHP编写类似的东西。 显然,这不是理想的,因为你会被重新发明轮子,但如果你需要获取数据或不管它是什么,而不能使用任何方法的上面,它会工作。