|
2006 年 9 月 05 日
学习在 i5/OS® 上使用 Zend Core for i5/OS 产品进行 PHP 数据库应用程序开发。另外,您还将学习如何安装 Zend Core,以及如何部署和运行用于访问存储在 DB2® Universal Database™ (DB2 UDB) for iSeries™ 数据库中的数据的 PHP 脚本。
什么是 PHP?
PHP 是 Hypertext Preprocessor 的缩写。PHP 基本上是一种脚本语言,通常用于快速开发 Web 页面。PHP 的最大优点是对于初学者来说比较容易学习。正如本文所展示的那样,开发用于访问 DB2 数据的简单 PHP 脚本也非常容易。可以将 PHP 脚本嵌入在 HTML 脚本中,用于在 Web 页面上显示 DB2 结果。
什么是 Zend Core for i5/OS?
Zend Core for i5/OS 是一款非常新的产品,在撰写本文之际,它的早期访问代码(Early Access Code)已经可以下载和测试了。这是一款令人兴奋的产品,因为我们第一次可以开发和运行完全与 i5/OS 平台集成的 PHP 脚本。在此之前,为了运行 PHP,需要设置一个 PASE 环境,编译 PHP,而且还要完成一系列的设置步骤。而有了 Zend Core 产品之后,则可以在 i5/OS 平台上享受开放、集成的 PHP 环境。
如何设置环境?
本文使用 Zend Core for i5/OS 的早期访问版本 V1.3.1。
在 iSeries 服务器上,需要有以下设置:
- 您的计算机应该处于 V5R4 级别,带有最新的软件临时修复程序(PTF)。
- 在安装 Zend Core for i5/OS 产品之前,必须创建好 /usr/local IFS 目录。如果该目录不存在,则产品安装会失败,并遇到如图 1 和图 2 所示的错误:
图 1. 安装错误
图 2. 安装错误
-
确保安装了下列所有产品。您可以输入 Go Licensed Program (GO LICPGM) 命令,并选择 Option 10 (Display),以便查看这些产品是否已经安装在计算机上:
|
描述 |
产品选项 |
特许程序 |
|
Portable App Solutions Environment |
33 |
5722ss1 |
|
Qshell |
30 |
5722ss1 |
|
System Openness Includes |
13 |
5722ss1 |
|
Digital Certificate Manager |
34 |
5722ss1 |
|
IBM Portable Utilities for i5/OS |
base* |
5733sc1 |
|
OpenSSH, OpenSST, Zlib |
1 |
5733sc1 |
- 最后,为了访问 Zend Core for i5/OS Administration Console,可使用 Internet Explorer 5.5 及以上版本,注意要启用 cookies 和 pop-ups。
安装 Zend Core for i5/OS
检查了安装 Zend Core 产品的先决条件之后,便可以安装该产品了。
-
在 iSeries 服务器上,使用
CRTSAVF FILE(QGPL/ZCORESAVF) |
命令创建一个 savf 文件,并将安装 savf 文件通过 FTP 传送到 iSeries 服务器,放在上述 savf 文件中。
-
使用以下命令恢复对象:
RSTOBJ OBJ(ZENDRSTPRD) SAVLIB(ZENDCORE) DEV(*SAVF) SAVF(QGPL/ZCORESAVF) MBROPT(*ALL) ALWOBJDIF(*ALL) RSTLIB(QGPL) |
图 3. 恢复对象
-
像下面这样开始安装。不断按 Enter 键,直到进入步骤 4:
CALL PGM(QGPL/ZENDRSTPRD) |
图 4. 开始安装
图 5. 安装
图 6. 安装
-
默认密码是 ZEND。这个密码是大小写敏感的。本文一直沿用这个默认密码。
图 7. 输入密码
- 一旦看到如图 8 所示的屏幕,就知道产品正在安装。
图 8. 安装完成
稍等片刻,当安装结束时,您将回到 i5/OS 主菜单。这表明安装成功。
之后,您可以尝试在 Web 浏览器中通过地址 http://<ipaddress>:8000/ZendCore 访问 Zend Core 用户界面。其中,<ipaddress> 是指 iSeries 服务器的 IP 地址。使用安装产品时输入的密码 ZEND 进行登录。
图 9. 登录屏幕
如果登录成功,则进入 Zend Core 用户界面。通过这个界面,可以管理、监控和测试服务器。
在 Control Center 菜单下,有三个主选项卡:
- 从 System Overview 选项卡中,可以看到关于 PHP 版本的信息和 Web 服务器的详细信息,另外还有关于磁盘空间的信息。在这个选项卡中,可以选择重新启动服务器。
- PHPinfo 选项卡显示来自 php.ini 文件的信息。
- Benchmark 选项卡提供对特定 URL 进行基准测试的功能。您可以获取诸如测试的持续时间、每秒钟的总请求数、失败的请求之类的详细信息。
通过 Configuration 菜单可以配置 php.ini 文件、扩展和其他 Zend 产品中的值。最后,Documentation 菜单包含了参考信息,另外还有一些搜索功能,用于查找参考文档。
图 10. Zend Core 用户界面
如果不能看到登录页面,那么请检查以下各项:
- 确保 iSeries 上的 ZendCore HTTP Server 已经启动。
- 检查 iSeries 服务器上的 8000 端口已经被占用。这可以通过运行
NETSTAT 命令并选择 Option 3 来做到。如果 8000 已经被占用,那么可以打开 /usr/local/Zend/apache2/conf/httpd.conf 文件并将下面这行:
Listen 8000
修改成
Listen <alternate_available_port>
然后,需要打开 IBM Web Administration 界面,在关于 ZendCore HTTP Server 的详细信息的屏幕上,进入 Reverse Proxy 选项卡。用 <alternate_available_port> 的值修改所有 Core 配置条目。单击 Apply,然后单击 OK。
图 11. HTTP Web 管理
然后,重新启动 Zend Core 服务器,并使用以下 URL 再次尝试访问 Zend Core 用户界面:http://<ipaddress>: <alternate_available_port>/ZendCore。
本文使用默认端口 8000。
现在来测试一个简单的 PHP 脚本。将下列代码保存在 /usr/local/Zend/apache2/htdocs 下一个名为 hello.php 的文件中:
<html><head><title>PHP Test</title> </head><body> <?php echo '<p>Hello World: Trying out PHP on i5/OS</p>'; ?> </body></html> |
您可以在浏览器中通过以下 URL 来测试这个脚本: http://<ipaddress>:<alternate_available_port>/hello.php。如果看到如图 12 所示的输出,则说明 Zend Core 产品正在为您的 PHP 页面服务。
图 12. 结果
一个简单的连接到 DB2 UDB for iSeries 的 PHP 脚本
如果您能看到如图 12 所示的结果,那么可以继续编写一个访问 DB2 UDB for iSeries 数据的 PHP 脚本。在开始之前,先创建下面这个表,并插入一些数据到这个表中。
create table QGPL.cust (custname char(15), custage integer, custcity char(20)) insert into QGPL.cust(custname, custage, custcity) values ('Suita' , 27, 'Kuala Lumpur') |
部署和测试脚本
<table width="75%" border="1" cellspacing="1" cellpadding="1" bgcolor="#eeeeee"> <tr> <td><b>Customer Name</b></td> <td><b>Customer Age</b></td> <td><b>Customer City</b></td> </tr><?php //Establish connection to database$host = "<RDB_name>"; $conn = db2_connect ($host,"<userid>", "<password>"); $query = "Select * from QGPL.customer";//Execute query $queryexe = db2_exec($conn, $query) ;//Fetch results print ("<b>The result of the query is:</b>\n"); while(db2_fetch_row($queryexe)) { $custname = db2_result($queryexe, 'CUSTNAME'); $custage = db2_result($queryexe, 'CUSTAGE'); $custcity = db2_result($queryexe, 'CUSTCITY'); //Put the results in an HTML table.print("<tr bgcolor=#ffffff>\n"); print("<td>$custname</td>\n"); print("<td>$custage</td>\n"); print("<td>$custcity</td>\n");print("</tr>\n");}?> |
可以通过发出 WRKRDBDIRE 命令来查看 <RDB_Name>,也可以在 iSeries Navigator 中查看 RDB 名称。展开您正在使用的 iSeries 机器,查看 Databases 区域。<userid> 和 <password> 是有权限执行 QGPL.cust 表上的选择操作的有效用户 ID 和密码。
将以上代码保存在 /usr/local/Zend/apache2/htdocs 目录下一个名为 DB.php 的文件中,然后在浏览器中通过以下 URL 来访问它: http://<ipaddress>:<alternate_available_port>/DB.php。
您应该可以看到如下图所示的输出:
图 13. 结果
结束语
本文的目的是介绍如何部署使用 Zend Core for i5/OS 产品访问 DB2 UDB for iSeries 数据的 PHP 脚本。本文提供的简单步骤应该可以帮助您深入编写更复杂的操纵 DB2 UDB for iSeries 数据的 PHP 脚本。通过 ibm_db2 函数,可以执行选择、预先选择、插入、更新和删除,可以调用存储过程,还可以检索数据库的元数据信息。要获得关于使用所有 ibm_db2 函数的更详细的信息和示例代码,请参考本文的 参考资料 部分。
参考资料
学习
获得产品和技术
讨论
关于作者
|

|
|

|

|
Suita Gupta 是马来西亚吉隆坡 IBM Innovation Centers for Business Partners 的技术顾问。在参加 IIC 小组之前,Suita 曾在 iSeries Application Innovation Program 小组工作,该小组负责为对他们的 iSeries 应用程序感兴趣的 ISV 提供技术支持。 |
 |
频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。
| 原始作者:Suita Gu… |
录入时间:2006-10-9 |
| 信息来源:IBM |
投稿信箱:itqoo@126.com |
|
|
 |
|