54 CHEN

Quercus记录:php和java的混合型项目建立手记

创业公司参与项目的人口众多、背景不一,目前市场上的主流方向为php与java,很多时候java工程师恨铁不成钢,php工程师也无可奈何。于是便有了此文,讲述如何使用quercus创建php java混合型项目。

quercus是什么? quercus是Caucho公司针对php语言的java实现,100%完成了php5的解析。是resin内建支持的功能。同时,因为使用了resin,使得php可以很容易得到连接池、分布式session、负载均衡等功能。使用resin的php项目可以更加安全,不存在很多fastcgi的问题。

性能如何? 官方:用mediawiki与drupal来做实验,要比mod_php快4倍。
有一个编译选项,在resin专业版里支持,可以把php转成java class,得到更高性能。

新建一个java项目混合php项目 web.xml是关键,里面声明了*.php文件的访问都以com.caucho.quercus.servlet.QuercusServlet来执行。

  1. <web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance"
  2. xmlns=“http://java.sun.com/xml/ns/javaee" xmlns:web=“http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”
  3. xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”
  4. id=“WebApp_ID” version=“2.5”>
  5. <display-name>testquercus</display-name>
  6. <welcome-file-list>
  7. <welcome-file>index.html</welcome-file>
  8. <welcome-file>index.php</welcome-file>
  9. </welcome-file-list>
  10. <servlet>
  11. <servlet-name>Quercus Servlet</servlet-name>
  12. <servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
  13. </servlet>
  14. <servlet-mapping>
  15. <servlet-name>Quercus Servlet</servlet-name>
  16. <url-pattern>*.php</url-pattern>
  17. </servlet-mapping>
  18. </web-app>

所有的php文件放在webapp下,所有的java文件还放到java目录里。

如何混合java到php中?
在java目录新建类Test54Chen,生成后位置:
WEB-INF/classes/com/chen/FrameWork.class

  1. /**

  2. * @author 54chen(陈臻) [chenzhen@xiaomi.com cc0cc@126.com]

  3. * @since 2011-10-25 下午08:40:49

  4. */

  5. package com.chen;

  6. public class FrameWork {

  7. public String go(String who) {

  8. return who + " gogogo!";

  9. }

  10. }

在webapp新建php文件:
test.php

  1. import com.chen.FrameWork;
  2. $f = new FrameWork();
  3. var_dump($f->go(“ohohoh”));
  4. ?>

配置到resin中:
目标文件夹指到webapp。

访问:test.php

截图:
1.整个项目的情况 quercus 2.访问的结果 quercus php java 下一记:如何利用java做连接池提供给php使用。

原创文章如转载,请注明:转载自五四陈科学院[http://www.54chen.com]

Posted by 54chen php