有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从网站上的PHP脚本运行Java类文件

我有一个网站,希望能够允许用户从该网站在服务器上运行Java文件

我希望用户单击一个按钮,该按钮将在服务器上运行Java文件,Java程序打印到standard out的任何内容都将在网站上打印出来,供用户查看

如何做到这一点(从PHP调用Java程序,并将标准从Java文件实时反馈到PHP网站)

更新:

感谢您回答如何从PHP运行Java程序。然而,我也希望能够,因为Java程序正在打印到标准输出,它将在执行时打印出大量文本,能够在网页上打印出来,以便用户可以看到Java程序在执行的哪个阶段

如何做到这一点?它是否需要任何额外的AJAX或JavaScript或类似的东西


共 (5) 个答案

  1. # 2 楼答案

    PHPexec()函数是一个不错的选择,但是您应该对允许执行的操作非常谨慎。。换句话说,不要依赖用户输入,因为这可能会危及整个服务器

    使用exec调用Java应用程序启动器,您可以从PHP执行任何Java应用程序,例如

    <?php exec("java -jar file.jar arguments", $output); ?>
    
  2. # 4 楼答案

    我更愿意将Java类包装在Java小程序中,然后可以从客户端的javascript调用调用Java小程序:参见http://www.rgagnon.com/javadetails/java-0170.html

    否则,如果调用会向标准输出抛出大量文本,或者由于系统依赖关系而必须在服务器上运行该类,则可以从php exec调用,但您可能需要类似cometd的内容来实时显示客户端上的文本。有各种javascript工具包的实现,如Dojo或jQuery

    对于服务器端,似乎在phphere中有一个Comet实现

    我希望这有助于

    菲利普

  3. # 5 楼答案

    既然你提到实时,我建议你建立一个PHP到Java的桥。在每次请求时初始化JVM会占用大量资源

    PHP/Java Bridge

    The PHP/Java Bridge is an implementation of a streaming, XML-based network protocol, which can be used to connect a native script engine, for example PHP, Scheme or Python, with a Java or ECMA 335 virtual machine. It is up to 50 times faster than local RPC via SOAP, requires less resources on the web-server side. It is faster and more reliable than direct communication via the Java Native Interface, and it requires no additional components to invoke Java procedures from PHP or PHP procedures from Java.