Java+PHP整合=混血新宠儿
在2009年互联网上大谈各种系统技术架构,我们看见了很多国内、国外大型网站采用了其他语言和Java(Jee)结合的方式进行工作,其中由我们熟悉的有 手机之家 和 Digg 都是采用PHP和Java混合的方式进行协同工作。
我见过最佳的实践方式也是很多人经常体验过的那就是淘宝(Taobao),请看这个URL地址:http://www.taobao.com/go/chn/in/thermal_underwear.php?TBG=14153.14.13&ad_id=&am_id=&cm_id=14002141798b906ee3fc&pm_id=,你看见了什么?一个卖保暖内衣的网页?No,不完全是,是一个PHP的页面。
从我的小道消息知道淘宝(阿里公司)是中国最大的电子商务网站,并且核心业务是采用Java技术构建的,他们怎么用PHP?一点都不奇怪,他们不仅仅采用REST概念,还采用了Java+PHP的方式。虽然不能100%知道淘宝是怎么运用PHP和Java协作的,但是我们可以通过eBay对外的资料看出这些大型网站是如何运用Java和其他语言共同协作的,如图所示:
流言飞语中,我们常常听到ASP是运行起来最快的语言,遗憾的是ASP对Linux/Unix友好程度差到极点,对于Web应用开发而言,PHP和Java相比无论是部署还是开发 PHP都比Java/Jsp简单,在某些方面PHP的运行效率不比Jsp差 , 参见一位网友写的《JSP与PHP详细性能测试》。从这篇文章的测试中我们能看出2种语言各有千秋。
在听听Php和Java程序员在说什么?
Php程序员:用直观,快速,简单的方式解决问题,注重于结果。
Java程序员:注重积累和重用,注重于过程,有时过度设计。
如果能把PHP和Java结合起来将是一件很美好的事情,Java用于后台的数据库查询、存储。而PHP作为最前端的页面展示,用户体验上应该是很不错的。所以现在有一个解决方式出来了,就是 Quercus (Refer)。原理如图所示:

图中展示了一个页面,通过该页面,用户可以执行一些操作(增/删/改/查),能看出HTTP 请求被 Apache+Tomcat 接收。web.xml 中的配置定义了解析 php 文件的 QuercusServlet 对象。这个对象是一个 Java servlet,它提供与 Quercus 库的接口。在这个样例应用程序中,在 php 文件中实例化的一个 PDO 对象通过 MySQL 连接器实例化与 MySQL 数据库的连接。PDO(PHP Data Object,PHP 数据对象)以一种统一的方式提供数据库访问,包括预处理语句等高级特性。
你有兴趣的话还可以去看看 Quercus提供的一个HelloWorld 的例子,这样你会更明白具体是怎么一回事。其实在实践中并只是上述说的这样,还可以采用php+Java+SOAP或者自定义xml传输协议的方式。
Quercus 在Java+PHP 的方案中更重要的是可以进行分布式计算,让PHP+Java的混合方案 在大型应用中可以更好体验他的伸缩性,如图所示:

希望将来在更多的项目中看见 PHP+Java 实现。
参考阅读资料:http://www.infoq.com/cn/news/2007/10/php-java-stack
–end–

本文由J2ee企业顾问-黄毅创作,并已采用创作共用署名2.5中国大陆版许可证授权。
评论
Comment from H.E.
Time 2011年01月4日 at 3:32 下午
有资料可以推荐给你,请去我另外一个站点,
http://code.google.com/p/javabloger-mini-books/downloads/list
倒数第三个:《淘宝的系统架构演变》
Comment from SamPeng
Time 2011年12月20日 at 11:01 上午
通过搜索引擎过来看到的。
这篇文章完全符合我的设想,我也想通过这种架构给产品带来更大的服务能力和伸缩性。但是php-java之间通信我一直犹豫不绝,是java作为服务,php用socket来通信呢?还是用其他的办法。
对Thrift很感兴趣,不知道这玩意是否靠谱。
我的设想是thrift作为中间件制造各种api。java作为服务层,php是表现层。
但性能方面的损耗网上是没有直观数据的。不可能等东西做出来再去算性能。很犹豫啊。毕竟web端的东西,就算是企业内部用。也可能达到10万并发的情况。







Comment from james
Time 2011年01月4日 at 3:30 下午
很高兴看到你写的这篇文章,现在公司要就是想用java结合PHP的方式,来开发电子商务的应用。不知道具体应该怎么样结合比较好。是安业务分开来。负责的业务给java处理吗?不知道淘宝他们的架构是怎么样的。有没有一些资料可以推荐。