2011-05-06 45 views
7

我已经看了很多关于从PHP使用Java的教程,但他们似乎与彼此冲突。他们中的很多人都说要将php.ini改为使用dll文件,但显然现在PHP5中有“内置”功能。但那需要Tomcat?我必须摆脱Apache来运行它吗? http://php-java-bridge.sourceforge.net/pjb/installation.php表示将.war文件放入Tomcat的autodeploy目录中,但我没有看到任何名为“autodeploy”的目录。有人会一步一步解释如何使用PHP 5和Apache在Windows计算机上(我使用Windows 7)获得Java工作?如何从PHP 5使用Java

+1

也许你可以解释你为什么要混合Java和PHP? – johnstok 2011-05-06 11:23:49

+0

因为我打算使用完全用Java编写的CMU Sphinx 4。我有一个Java应用程序来执行语音识别任务,以及一个用于收集音频的php应用程序。现在我收集音频并在稍后用Sphinx进行分析,然后在有机会时通过电子邮件发送结果。我需要更改应用程序以收集音频,运行语音识别,并立即通过php应用程序发回结果。 – 2011-05-07 16:26:13

+0

autodeploy目录的含义是tomcat主目录下的'webapps'目录。 – 2011-05-09 08:26:41

回答

13

您可能会发现大量关于如何从您的PHP webapp使用Java类的无用和过时的信息,根本没有任何帮助。大约一年前,我遇到了一个类似的问题,我发现成熟度足以用于生产的唯一方法是PHP/Java Bridge--您在Sourceforge上找到的那个。它比人们所期望的更好,并且不需要Java知识(但是,如果您确实知道Java,则应考虑为此编写Web服务并在PHP端使用它)。

Bridge的文档不是很明显,但是请记住,您应该坚持使用它,并且不要阅读描述不同方法的其他资源 - 不要混淆,即不必安装任何PHP扩展或者没有 - 它们都涉及另一种(通常是过时和不受支持的)从PHP调用Java的方法。

PHP/Java桥是一种网络协议,所以你需要在你的PHP端的唯一的事情是确保“allow_url_include”在php.ini

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

有两个选择如何获取网桥并将其绑定到某个本地端口。

1)复杂的:建立一个Tomcat,创建与桥本身和你想使用图书馆战争文件。这样,这里描述:

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

要部署战成Tomcat安装简单地把战争到Tomcat的web应用程序文件夹,然后重新启动它。

2)更简单:打包一个jar而不是war并运行它(它将使用嵌入式web服务器,因此您不必安装Tomcat并部署任何东西)。走这条路是指此页:

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

这两种方式会为你工作(不看“桌面”这个词在第二个选项,这样将正常工作与你的PHP Web应用中)。

参考关于如何将“实施例”部分(obvously)在使用它的示例。您也可以参考我的小型PHP客户端,该客户端使用PHP/Java Bridge与Java中的Neo4J嵌入式数据库交谈。然而这个样本可能更复杂,它的目的是要部署到Tomcat,反正你可以有一个想法如何实例化和使用类从中:

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

+1

这是完美的!谢谢! – 2011-05-10 06:32:10

1

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

+0

我不想多次调用java,只需要一次,然后就新的音频文件进行通信以识别。这是因为在分配识别器时有很多开销,但之后并不多。一个webapp听起来有趣,但我从来没有写过一个... – 2011-05-10 06:44:23

1

Quercus

栎是Caucho Technology的快速,开放源代码,PHP语言的100%Java实现。 Quercus是Caucho Technology的Resin Application Server的一项功能,内置于Resin中 - 不需要额外的下载/安装。使用Resin的开发人员可以启动PHP项目,而无需安装标准的PHP解释器(http://www.php.net),因为Quercus扮演着PHP引擎的角色。

+0

整洁。这是GPL,所以我绝对可以将它用于我的研究应用。 – 2015-03-17 03:49:25