IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

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

五四陈科学院-坚信科学,分享技术 2011-11-13 21:34:00 累计浏览 2,660 次
本机暂存

创业公司参与项目的人口众多、背景不一,目前市场上的主流方向为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,得到更高性能。

  1. 新建一个java项目混合php项目
    web.xml是关键,里面声明了*.php文件的访问都以com.caucho.quercus.servlet.QuercusServlet来执行。<?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  5.     id="WebApp_ID" version="2.5">  
  6.     <display-name>testquercus</display-name>  
  7.     <welcome-file-list>  
  8.         <welcome-file>index.html</welcome-file>  
  9.         <welcome-file>index.php</welcome-file>  
  10.     </welcome-file-list>  
  11.     <servlet>  
  12.         <servlet-name>Quercus Servlet</servlet-name>  
  13.         <servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>   
  14.     </servlet>  
  15.     <servlet-mapping>  
  16.         <servlet-name>Quercus Servlet</servlet-name>  
  17.         <url-pattern>*.php</url-pattern>  
  18.     </servlet-mapping>   
  19. </web-app>  

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

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

  1. /** 
  2.  * @author 54chen(陈臻) [chenzhen@xiaomi.com czhttp@gmail.com] 
  3.  * @since 2011-10-25 下午08:40:49 
  4.  */  
  5. package com.chen;  
  6.   
  7. public class FrameWork {  
  8.     public String go(String who) {  
  9.         return who + " gogogo!";  
  10.     }  
  11. }  

在webapp新建php文件:
test.php

  1. <?php  
  2. import com.chen.FrameWork;  
  3. $f = new FrameWork();  
  4. var_dump($f->go("ohohoh"));  
  5. ?>  

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

访问:test.php

截图:
1.整个项目的情况
quercus
2.访问的结果
quercus php java

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. SmartSprites - 命令行形式的CSS Sprites生成器 (累计阅读 123,898)
  2. 使用gettext来支持PHP的多语言 (累计阅读 39,271)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,165)
  4. Java开发岗位面试题归类汇总 (累计阅读 22,159)
  5. android 开发入门 (累计阅读 19,532)
  6. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,409)
  7. 我的PHP,Python和Ruby之路 (累计阅读 13,150)
  8. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,792)
  9. HashMap解决hash冲突的方法 (累计阅读 12,657)
  10. 15个最好的免费开源电子商务平台 (累计阅读 12,542)