如何在PHP中使用Java?

如何在PHP中使用Java?,java,php,wordpress,web-deployment,Java,Php,Wordpress,Web Deployment,我想使用WordPress进行web开发,这是PHP编写的,包括与MySql的数据库连接。整个事情就是PHP。但是我需要使用Java来进行后端数据处理和一些现有的Java开源库 谷歌搜索表明,PHP/Java桥是一条可行之路。去那座桥最好吗?如果一切都是PHP和WordPress,那么仍然是使用J2EE技术的一种方式,包括JSP、Servelet等 编辑 Java是必需的,因为我需要运行机器学习算法,这些库只对Java可用。此外,PHP在处理大量数据时可能会遇到效率问题 我将要使用的Java库的

我想使用WordPress进行web开发,这是PHP编写的,包括与MySql的数据库连接。整个事情就是PHP。但是我需要使用Java来进行后端数据处理和一些现有的Java开源库

谷歌搜索表明,PHP/Java桥是一条可行之路。去那座桥最好吗?如果一切都是PHP和WordPress,那么仍然是使用J2EE技术的一种方式,包括JSP、Servelet等

编辑

Java是必需的,因为我需要运行机器学习算法,这些库只对Java可用。此外,PHP在处理大量数据时可能会遇到效率问题


我将要使用的Java库的一个很好的例子是那些处理大数据的库,它们主要是Java,比如Hadoop。

这里非常简单的答案是不要

PHP的设计目的是,在每次页面请求启动时,作为单个操作执行一小部分脚本,输出与这些脚本相关的数据,然后在生成输出后立即终止。实际上,它没有时间等待Java程序和库完成它们的工作,所以不要尝试将它们放在另一个中,这就是为什么依赖数据库的PHP脚本倾向于使用高度优化的数据库进行即时检索,而不是依赖连接和选择的常规数据库,这些连接和选择需要几秒钟才能形成正确的数据响应。PHP和浏览网站的用户都没有时间这样做

您可以做的是将java工具包装在java servlet中,并让它们在运行PHP实例的同一服务器/主机上运行,这样您的脚本就可以作为
http://127.0.0.1:7254/...
与生成脚本输出时需要使用的任何其他restful API一样,只要您确保不会让PHP等待:如果它必须向您的工具发送数据,这是一个post and forget操作,PHP不应该得到任何响应,除非在数据被您的工具实际处理之前立即“接受数据”或“拒绝数据”。如果您需要发布数据然后返回结果,则必须使用两个调用。一个用于发布数据,然后第二个用于请求发布结果的电话

例如:

  • 网页生成链:基于PHP的WordPress CMS->您的数据库
  • 用于处理的web输入:基于PHP的WordPress CMS->用于机器学习的Java servlet
  • 数据处理链:用于机器学习的Java servlet->您的数据库
因此,您只基于数据库中的内容构建页面,您将数据发布到java servlet,只是为了让它们开始做一些事情,而不必等待响应,它们的结果将最终出现在您的数据库中,并且一旦进入,您将获得页面,您的java程序将独立于WordPress设置完成它们需要做的事情

如果您要这样做,您可能应该将该功能编写为一个WordPress插件,它可以与您的Java servlet通信


现在您有第二个项目需要做:将java程序转换为web服务器。虽然不太复杂,但如果做得好,肯定会浪费一些时间(因为你需要用servlet包装,并确保这些servlet可以在与wordpress实例相同的服务器上运行而不会崩溃,这总是很有趣)

请不要:PDangerous?“夏洛特德诺斯”怎么会这样?这不是不可能的。您需要使用公共协议并在进程之间传递消息。我会考虑设置一些休息服务。您可以使用TCP构建自己的协议,但我建议您不要这样做,因为您要为自己设置大量的工作和潜在的bug。您需要使用已经用Java编写的机器学习库,将它们迁移到PHP是一项乏味的工作(是的,这是一个限制,也是一个应该在问题正文中公布的动机)。通过了解这一点,读者可以在解决您的问题时提供更好的指导(不是我,我对这个Java桥不太了解)。如果你对PHP和Java的流行程度有什么看法,可以发推特或写博客。回到实际问题,@martin你能编辑你的问题并添加所有相关信息来支持为什么需要混合使用PHP和Java吗?需要机器学习库是朝着正确方向迈出的一大步,但这些库是否需要根据用户数据“自行”完成某些工作,或者它们是形成正确页面的必要条件;哪些库(您是否尝试过查找PHP等效库);等等。如果你真的想变得疯狂,你可以在页面通过AJAX加载后请求数据,这样就不会阻碍页面渲染。事实上,虽然这与其说是“疯狂”,不如说是“更实时”,而且几乎可以由任何大型单页应用程序完成。Gmail就是最明显的例子。数据进入,存储在数据库索引的巨大数据集中,应用程序只要求Web服务器检查数据库自上次检查以来是否有任何变化。(这个答案实际上并不是“在外面”,而是如果互联网在你的链条中的某个地方,你如何在不同的语言之间实现RESTful API)@Mike,谢谢你的解释和见解。我需要更多的时间来消化。您所描述的方法和工作流程是处理这种情况的典型方法,还是只是一种变通方法?我问这个问题是因为我还在考虑是否需要使用WordPress?WP对许多现有功能都很好,但如果它不能与Java一起正常工作,我可能不得不从头开始使用Java。谢谢。在回答这些问题之前,我们需要的第一点信息是你想用什么WordPre