【问题标题】:PHP and Java Integration within codeignitercodeigniter 中的 PHP 和 Java 集成
【发布时间】:2011-11-13 21:51:39
【问题描述】:

我有一个基于 PHP 5 的站点,我需要将它与我创建的一系列 Java 类集成。基本上我已经创建了一个 web 服务来将 xml 发布到一个文件中,一旦在那个文件中我解析了 xml 并想在一个 java 文件中调用方法。

我不知道如何从 PHP 调用 java 函数。我已经研究过 PHP/Java 桥接器,但没有任何东西可以清楚地描述如何设置它。

任何帮助将不胜感激,

谢谢

【问题讨论】:

    标签: java php web-services codeigniter integration


    【解决方案1】:

    您可以使用ThriftGoogle Protocol BuffersAvro 之类的东西来生成接口并在两种语言之间传递消息。这类似于 Facebook 在其 PHP 和其他代码之间进行通信的方式。

    以 Google proto 缓冲区为例,您将创建一个定义某些结构的 .proto 文件。然后在该 .proto 文件上运行 proto 编译器,它将生成相应的 PHP 和 Java 类,这些类可以通过一些中间件桥在两种语言之间传递。

    Avro 和 Thrift 都提供了创建可以相互通信的客户端和服务器的方法,我相信您可以使用 proto 缓冲区独立完成。

    这是一个在 PHP 中设置 Thrift 客户端的教程:http://chanian.com/2010/05/13/thrift-tutorial-a-php-client/

    当然最好的办法是使用在 JVM 上运行 ON 的 PHP 实现,然后您就可以直接访问所有 J​​ava 库。您将能够call Java objects like they are plain old PHP objects。 JVM 托管的动态语言也变得非常快,尤其是使用 JDK 7。Quercus(在 JVM 上运行的 PHP 实现)实际上已被证明比主流语言更快 (4x faster!) PHP 解释器。

    另外,如果您在 JVM 上运行 PHP,那么您可以生成线程并将后台工作排队...以及您可以访问的所有其他新库...切换到栎树。

    【讨论】:

      【解决方案2】:

      您应该考虑php-java-bridge。我过去曾在一个带有 php 前端和一个 java 后端的项目中使用它。

      引自他们的网站:

      PHP/Java Bridge 是流式、基于 XML 的网络协议的实现,可用于将原生脚本引擎(例如 PHP、Scheme 或 Python)与 Java 虚拟机连接起来。它比通过 SOAP 的本地 RPC 快 50 倍,在 Web 服务器端需要更少的资源。它比通过 Java Native Interface 直接通信更快、更可靠,并且不需要额外的组件即可从 PHP 调用 Java 过程或从 Java 调用 PHP 过程。

      编辑:我在另一个SO answer 中解释了使用 Quercus 的缺点

      【讨论】:

        【解决方案3】:

        我不确定代码点火器的结构如何执行其代码,但我刚刚发现了与此问题类似的另一个问题:Run Java class file from PHP script on a website

        【讨论】:

          猜你喜欢
          • 2011-05-08
          • 2020-02-28
          • 1970-01-01
          • 2011-02-20
          • 2012-09-05
          • 2017-03-25
          • 2012-01-02
          • 1970-01-01
          • 2020-07-01
          相关资源
          最近更新 更多