quercus下载
Quercus是一个开源PHP 5引擎,已完全用纯Java实现。 Quercus文档提到它在Resin应用程序服务器上运行,并利用了诸如负载平衡,代理缓存等Resin功能。 本文介绍了Quercus通过在Apache Tomcat之上运行而提供的功能。 此外,它还演示了QuercusPHP加Java混合方法对Web服务和应用程序的简便性和灵活性。
为什么选择Quercus?
Quercus PHP库完全用Java实现,从而带来了同时成为Java和PHP应用程序的好处。 由于Java和PHP的紧密集成,Quercus应用程序可以使用Java技术和框架,例如Spring,Hibernate,SOA框架等。 为了促进这种互操作性,Quercus提供了一个API来从PHP调用Java库。
其他好处包括:
- 易于开发:PHP库以Java实现,使其快速,可靠且易于使用。 开发人员不必担心在基于CPHP实现中看到的分段错误和C指针超限。
- 可伸缩性:Quercus是基于Java的实现,在Resin和Apache Tomcat等应用服务器之上运行。 因此,他们可以使用Application Server提供的所有功能(连接池,分布式会话等)。
- 国际化:由于它是PHP的Java实现,因此它固有地支持16位Unicode字符串和函数。
安装Quercus
安装Quercus就像将jar文件安装到Java应用程序中一样简单,但是由于它是Resin应用程序服务器的功能,因此它内置在Resin中。 另外,由于Quercus接管了PHP引擎,因此无需下载PHP引擎。 要安装Quercus,请执行以下步骤:
- 从公司网站下载Resin应用程序服务器(请参阅参考资料 )。
- 打开zip文件并解压缩jar文件quercus.jar,resin-util.jar和javamail-141.jar。
- 将这些文件以及MySQL连接器jar文件(如果需要)复制到Web应用程序的WebContent \ WEB-INF \ lib文件夹中。
- 另一个简单的方法是使用本文结尾处压缩的示例应用程序作为基础,并从那里复制库(请参阅可下载资源 )。
输入Quercus
为了描述Quercus的功能,我将向您展示一个简单的HelloWorld示例。 可以使用以下步骤创建此应用程序。 (我已经使用Eclipse IDE创建了本文中的所有应用程序,并粘贴了屏幕截图以大致了解其中涉及的步骤。您选择的任何IDE都可以使用。)
以下步骤的基本思想是创建一个动态Web应用程序项目,将其指向应用程序服务器运行时(在本例中为Apache Tomcat),并配置php.ini和web.xml之类的参数。
- 在IDE(在本例中为Eclipse)中,创建一个新的Web项目,如图1所示(Alt + Shift + N)。
图1.创建新项目
- 输入项目名称和目标运行时。 样本设置屏幕如图2所示。
- 单击文件 -> 新建 (Alt + N), 然后在默认工作区中创建一个名为TestHelloWorld的新动态Web应用程序。
- 我已将Apache Tomcat版本5.5配置为该应用程序的运行时环境。
图2.设置新项目
- 复制如图3所示的结构,其中包括Quercus和相关的jars。 此外,创建名为WebContent,META-INF (包含清单文件或上下文文件), JavaScript资源等的文件夹。
图3.设置目录结构
项目TestHelloWorld的根目录包含以下文件夹:
- WebContent:此目录包括WEB-INF目录,该目录包含lib文件夹下的quercus.jar之类的库,以及Manifest.mf文件的META-INF目录。 WEB-INF文件夹还具有Web应用程序的静态和动态内容,例如php,jsp或html文件。
- Java资源:该目录包括Apache Tomcat,JRE和Web应用程序库之类的库。
- JavaScript资源:这包括您想包含在项目中的任何资源。
可以通过IDE创建和配置服务器,并且可以在常规或调试模式下执行该服务器(请参见图4)。
Eclipse中的J2EE透视图有一个服务器选项卡,右键单击该选项卡将向用户显示创建新服务器的选项(参见图4)。 该服务器可用于从Eclipse IDE管理应用程序服务器。
图4.配置新的服务器配置
除非另有要求,否则定义新服务器仅涉及选择默认值(请参见图5)。 服务器运行时与创建项目时选择的运行时相同,本例中为Apache Tomcat版本5.5。
图5.为新服务器配置选择的选项
- 配置服务器后,可以将资源从左侧的“可用”列添加到右侧的“已配置”列。
配置新服务器后,需要在服务器上配置新创建的资源(请参见图6)。 此服务器配置将部署在开发过程中创建的资源。
图6.服务器上的资源配置
配置Quercus
php.ini文件用于配置PHP行为,例如设置目录,文件路径,更改会话等。 可以在web.xml文件中指定此文件。 清单1给出了一个示例。
清单1.在web.xml文件中指定php.ini
<init-param>
<param-name>ini-file</param-name>
<param-value>WEB-INF/php.ini</param-value>
</init-param>
PHP源文件的编码由脚本编码指示,定义如清单2所示。
清单2. web.xml文件中PHP编码规范
<init-param>
<param-name>script-encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
QuercusServlet是Quercus引擎的接口,该引擎解析php文件,并且通常如清单3所示进行配置。
清单3. web.xml文件中的QuercusServlet的配置
<web-app xmlns=”http://java.sun.com/xml/ns/j2ee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd”
version=”2.4”>
<description>Quercus Hello World on Tomcat</description>
<servlet>
<servlet-name>Quercus Servlet</servlet-name>
<servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
描述Quercus hello world php文件(index.php)
index.php文件定义了一个名为getTheDate
的方法,该方法实例化Java对象。 Quercus通过使用import语句使用任何Java类的能力使其具有高度的互操作性和灵活性。 清单4显示了一个示例。
清单4. PHP导入功能的示例
<?php
function getTheDate() {
import java.util.Date;
$currentDate = new Date();
return $currentDate;
}
?>
清单5中的代码演示了HTML片段中对getTheDate()
和phpinfo()
方法的调用。
清单5.调用getTheDate()和phpinfo()
<body>
<h1>This is the Hello World page</h1>
<h3>but, it does something more then Hello World!</h3>
<h4> The current date and time is :<?php echo getTheDate() ?></h4>
<h4> and finally here is the phpInfo: <?php echo phpinfo()?>
</body>
更改代码后,我需要启动服务器,以便可以测试HelloWorld应用程序。 可以通过右键单击我们之前创建的服务器配置,然后单击运行或调试选项来完成。
图7.以调试或运行模式启动服务器
图8显示了启动服务器并转到url之后应用程序的最终输出。
请注意,本文结尾处的示例文件HelloWorld.zip包含应用程序的压缩版本(请参阅可下载资源 )。 它还包括Eclipse所需的元数据文件,以便可以将其直接无缝地导入该IDE。
图8. Hello World页面的输出
魁北克行动
现在让我们看一个真实的例子。 图9显示了“管理客户”页面的示例,用户可以通过该页面执行操作,例如添加新客户,搜索客户以及查看数据库中的所有客户。
图9.管理客户应用程序的流程
如上图所示,Tomcat收到HTTP请求。 web.xml中的配置定义了QuercusServlet对象来解析php文件。 该对象是与Quercus库连接的Java servlet。 在此示例应用程序中,在php文件中实例化的PDO对象通过MySQL连接器实例化与MySQL数据库的连接。 PDO或PHP数据对象以统一的方式提供数据库访问,包括高级功能(如准备好的语句)。
图10所示的Manage Customer应用程序的目录结构遵循与HelloWorld示例中上述相同的模式目录结构。
图10. Manage Customer应用程序的目录结构
请注意,此应用程序文件的核心包含在以下子目录下的WebContent文件夹中:
- META-INF:它包含用于连接到MySQL数据库的数据库凭据信息。
- WEB-INF:这包括库文件夹,其中包含用于运行应用程序的Quercus jar之类的文件。 它还包括描述数据源的web.xml。
- 所有关联的php和html文件都包含在WebContent文件夹中。 这些文件用作应用程序的视图部分,向Web应用程序提供动态和静态内容。
请注意,本文末尾的示例文件ManageCustomer.zip包含应用程序的压缩版本(请参阅可下载的资源 )。 它还包括Eclipse所需的元数据文件,以便可以将其直接无缝地导入该IDE。
Tomcat和MySQL的配置
Tomcat的配置与HelloWorld应用程序非常相似。 另外,我们需要定义一个资源引用,如清单6所示。该元素指定资源管理器连接工厂引用的名称。 在这种情况下,它将是由javax.sql.DataSource类型的jdbc / mysql指定的数据库连接。
清单6.资源参考定义web.xml
web.xml
. . .
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
. . .
我们需要在WebContent / META-INF文件夹下的context.xml中定义连接资源,如清单7所示。它包含驱动程序名称,jndi名称,用户名,密码,数据类型和url之类的属性。
清单7. context.xml中定义的属性
context.xml
. . .
<Context>
<Resource driverClassName="com.mysql.jdbc.Driver"
maxActive="4" maxIdle="2" maxWait="5000" auth="Container"
name="jdbc/mysql" password="" type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/customer" username="root"/>
</Context>
. . .
客户数据库只有一个表,可以通过运行以下脚本来创建该表:
use customer;
CREATE TABLE users (
id INT NOT NULL PRIMARY_KEY AUTO_INCREMENT,
name VARCHAR(200)
);
请注意,HelloWorld应用程序中描述的配置步骤,例如创建新服务器配置,添加资源,以调试或运行模式启动服务器等,也可以类似的方式应用于此应用程序。
申请摘要
应用程序的索引页面显示了可由用户执行的操作列表(请参见图11)。
图11. Manage Customer index页面的屏幕快照
支持的操作有:
- 添加客户
- 搜索客户
- 查看所有客户
- 删除所有客户
显示所有操作的index.html页面由具有各自操作的单个表单组成。 详细了解“添加客户”。 相应的html包含对addCustomer.php的引用以及POST方法,作为表单操作。
<H2>Add Customer</H2>
<form action="addCustomer.php" method="post">
<label>Customer name</label>
<input type="text" id="customerName" name="customerName"/>
<input type="submit" value="Add"/>
</form>
该操作中的php代码从POST中提取customerName
参数,并为插入创建sql语句。 然后,通过传入数据源的jndi名称来实例化PHP数据对象。
<?php
$custName = $_POST['customerName'];
$pdo = new PDO("java:comp/env/jdbc/mysql");
$sql = "insert into users values ('" . $custName . "');";
$rows = $pdo->exec($sql);
if ($rows>0) {
echo("<h4> Adding ". $custName . " was successful</h4>");
}
else echo('<h4> An error occurred</h4>');
?>
以类似的方式,已经实现了“查找”,“查看全部”和“删除”操作(请参阅“ 下载”部分中随附的源代码)。
图12.查看所有客户页面的屏幕截图
结论
本文介绍了Quercus在Apache Tomcat之上运行并连接到MySQL数据库的功能。 作为完全用Java实现PHP框架,它可以充分利用Spring,Hibernate等基于Java的框架。 Quercus由于具有PHP方面,因此对开发人员也具有高度的可用性,而由于核心框架已在Java中实现,因此Quercus具有鲁棒性和可扩展性。
翻译自: https://www.ibm.com/developerworks/web/library/wa-quercus/index.html
quercus下载