Answers
目前我公司就是这种架构,但是也不是说让php只负责前端,跟淘宝UED的那篇文章,多少有点出入。php当然可以只负责前端来调用java数据接口。但是也可以去负责一些php擅长的逻辑。
java负责大数据的处理之类的。从业务上与PHP分离开。
楼主的问题是如何交互, @seanlook 说的几种方式,比较完整了。大致就是webservice、RPC,soap这几种方式。用java虚拟机跑php,我觉得要比rpc调用会坑很多。
我们公司是用的RPC,但是是自己实现的RPC框架,数据转为二进制的,使用google 的 protobuffer。
rpc调用也很方便。几行代码就搞定了。因为数据传输使用二进制,所以效率上是比soap之类的快。应该是最优的选择了。希望能帮到题主。
更新!
我去,没仔细看楼主的问题,原来只是要交互啊,最简单的,如果你用springmvc,那么你直接把action作为接口暴露出来,php发起http请求调用java的接口就哦了~!
很有意思,我曾经也是老大让我做过这个调研,当时还用php与java结合做了一个项目。看到这里前面的回答,大部分都是说通过RESTfull API或json去调用java处理业务逻辑的结果,而我想题主可能更需要的是
Quercus
、
PHP/Java Bridge
或
SOAP
这三种技术的一种。
Quercus 是一个完全以java实现的PHP5引擎,可以让PHP程序在JVM上执行,前端php代码就像引入java包一样,然后就可以直接new一个java对象来使用。这也是我在调研项目中选用的。
PHP/Java Bridge 本质上也是通过XML去前后端交互数据的,但是它实现的PJB协议不需要我们自己去解析XML获取数据,php-java-bridge帮我们做好了数据类型映射这类功能。
SOAP具有与程序语言、平台和硬件无关的特性,不仅可以引用于php和java之间,但是据说效率不怎么高。
实际测试结果,个人真觉得没必要把一个项目用这种实现方法,一个字,zuo。
有了上面这些信息,我相信谷歌可以告诉你更多。