如何在PHP 5中使用Java

7
我查看了一些关于从PHP使用Java的教程,但它们似乎相互矛盾。其中许多人说要更改php.ini以使用dll文件,但显然现在PHP 5中有“内置”功能。但这需要Tomcat吗?我必须放弃Apache才能运行吗?http://php-java-bridge.sourceforge.net/pjb/installation.php建议将.war文件放入Tomcat的autodeploy目录中,但我没有看到任何名为“autodeploy”的目录。是否可以有人逐步解释如何在Windows机器上(我正在使用Windows 7)使用PHP 5和Apache使Java工作?

1
也许您可以解释一下为什么要尝试混合使用Java和PHP? - johnstok
因为我将使用完全由Java编写的CMU Sphinx 4。我有一个Java应用程序来执行语音识别任务,以及一个php应用程序来收集音频。现在我收集音频并稍后使用Sphinx进行分析,然后在有机会时通过电子邮件发送结果。我需要更改应用程序以收集音频,运行语音识别,并立即通过php应用程序发送结果。 - Nate Glenn
自动部署目录指的是Tomcat主目录下的“webapps”目录。 - Yasin Bahtiyar
为什么不使用Java进行音频收集呢?为什么要进行如此不寻常的混合呢? - Vladislav Rastrusny
3个回答

14

在如何从PHP Webapp中使用Java类的相关信息中,您可能会发现大量无用且过时的信息,这些都没有帮助。大约一年前,我也遇到了类似的问题,我发现目前唯一成熟、可用于生产环境的方式是PHP/Java Bridge -- 这是您在Sourceforge上找到的那种方式。它的表现比想象的要好,并且不需要了解Java知识(但如果您了解Java,应该考虑编写Web服务并在PHP端使用它)。

桥梁的文档不太明显,但请记住,您应该坚持使用它,而不是阅读描述不同方法的其他资源--不要混淆,即您不必安装任何PHP扩展或其他内容--所有这些都与从PHP调用Java的另一种(通常是过时和不受支持的)方式有关。

PHP/Java Bridge是一种网络协议,因此您在PHP端唯一需要做的就是确保php.ini中启用了“allow_url_include”。

从Java侧,您需要将PHP / Java Bridge绑定到一个空闲端口并监听连接。然后,您的PHP应用程序将能够对Bridge的代理文件执行“require_once”,该文件将在该端口上可用。这就是全部内容,您可以使用该代理Bridge对象在PHP脚本中透明地实例化和调用Java类(它将在后台序列化和传输调用和结果)。

有两种选项可用于将Bridge设置并绑定到某个本地端口。

1)复杂版:设置Tomcat,创建一个包含Bridge本身和您想要使用的库的war文件。该方法在此处描述:

http://php-java-bridge.sourceforge.net/pjb/webapp.php

要将war部署到Tomcat安装中,只需将其放入Tomcat的webapp文件夹中并重新启动即可。

2)更简单的一种:打包一个jar而不是war并运行它(它将使用嵌入式Web服务器,因此您无需安装Tomcat或部署任何内容)。要走这条路,请参考此页面:

http://php-java-bridge.sourceforge.net/pjb/desktop-apps.php

无论哪种方式都可以为您工作(不要看第二个选项中的“桌面”单词,这种方式也可以很好地与您的PHP Web应用程序配合使用)。

在“示例”部分查看如何使用它的示例。您还可以参考我的小型PHP客户端,它使用PHP / Java Bridge在Java中访问Neo4J嵌入式数据库。但是,此示例可能更复杂,并且旨在部署到Tomcat中。无论如何,您都可以了解如何实例化和使用其中的类:

https://github.com/coffeesnake/neo4j-php-wrapper


1
你可以通过分叉进程并通过 stdin / stdout 进行通信,从 PHP 中调用一个简单的 Java 应用程序。或者,如果将 Sphinx 集成到 Web 应用程序中,可以通过进行 HTTP 调用来集成。

我不想多次调用Java,只需一次并通信以识别新的音频文件。这是因为在分配识别器后有很多开销,但之后几乎没有什么开销。Web应用程序听起来很有趣,但我以前从未编写过。 - Nate Glenn

1

橡树:

Quercus是Caucho Technology的快速、开源、100% Java实现的PHP语言。Quercus是Caucho Technology的Resin应用服务器的一个特性,并内置于Resin中-无需额外下载/安装。使用Resin的开发人员可以启动PHP项目,而不必安装标准的PHP解释器(http://www.php.net),因为Quercus扮演了PHP引擎的角色。


很好。它是GPL许可的,所以我肯定可以在我的研究应用中使用它。 - Nate Glenn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接