【问题标题】:What's the recommended way of running Java from PHP 5.2?从 PHP 5.2 运行 Java 的推荐方式是什么?
【发布时间】:2009-12-26 12:52:54
【问题描述】:

我想从 PHP 5.2 调用 Java,在网络服务器或命令行脚本上运行。

从 PHP 4 开始,这似乎很简单,只需要安装 PECL Java extension

PHP 4 扩展的示例代码:

<?php
  // get instance of Java class java.lang.System in PHP
  $system = new Java('java.lang.System');

  // demonstrate property access
  echo 'Java version=' . $system->getProperty('java.version') . '<br />';
?>

但是,PHP 5 上不存在此扩展。

PHP 5 最接近的替代方案是什么?

编辑:

真的,我正在寻找一个类似于或者 C PHP 扩展或 PHP 4 Java 扩展提供的接口。 Java 程序相当小,只需要在调用之间保留少量状态,不需要异步运行。 PHP 脚本只会同时运行少量实例。

这也需要部署到多台机器上(运行 Ubuntu 9.x 和 Debian Lenny),所以它应该很容易安装。

【问题讨论】:

  • 如何做到这一点在很大程度上取决于您的用例。你能详细说明一下你真正想要实现的目标吗?

标签: java php php-5.2


【解决方案1】:

这个项目似乎是个不错的选择:http://php-java-bridge.sourceforge.net/pjb/

【讨论】:

  • 为此+1;我以前用过它,对我来说这是一头猪,但最终似乎工作正常。虽然没有写出可读性极强的代码......
【解决方案2】:

由于您想在 java 站点上保持状态,如果您更流利地编写 servlet,我会使用侦听普通套接字的 java 进程或使用简单的嵌入式 Web 服务器(winstonejetty)。此相关问题中列出了其他一些可能性:What is the best approach for IPC between Java and C++?

【讨论】:

    【解决方案3】:

    现在完全符合您的要求,但您可以看看 Caucho 的 Resin,尤其是他们的 Quercus,它是 PHP 的 100% Java 实现,它是 allows integration of Java and PHP

    【讨论】:

    • 谢谢,但是我不想为了实现这一目标而彻底改变我的 PHP 环境。
    【解决方案4】:

    我有一个项目使用 Java 程序来获取一些数据。这很简单,但我发现了

     $java_command="cd /var/java_dir && java my_java_program $myparam1 $myparam2";
     $result=exec($java_command,$output,$return_code);
    

    工作得很好。

    【讨论】:

    • 这是一种可能,但有点粗糙,我希望能够在调用之间存储一些状态。
    • 当然,为此我写入数据库或文件。我敢肯定还有更复杂的解决方案。
    【解决方案5】:

    Zend Server 还具有一个内置的守护程序,允许您从 PHP 中访问 Java 功能。它开箱即用。

    【讨论】:

      猜你喜欢
      • 2011-11-05
      • 1970-01-01
      • 2017-05-27
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      相关资源
      最近更新 更多