oracle 连接池 php,php oci8 oracle连接池(11g) drcp

一个关于drcp的文档

使用 Oracle 数据库 11g 连接池

Oracle 数据库 11g 包含一个专门针对需要高可扩展性的应用程序的新特性:数据库驻留连接池 (DRCP)。通过 DRCP,我们可以在不同应用程序进程间共享数据库连接,从而更高效地使用服务器资源并全面提升吞吐量。Zend Server 随附的 PHP OCI8 扩展(目前为 V1.3.5)包含对 DRCP 的即用支持,使开发人员可以立即在其 PHP 应用程序中使用该特性。有关 PHP 和 DRCP 的更多详细信息,请参阅。

要在 Oracle 中启用 DRCP,登录到数据库服务器并启动连接池:

shell> sqlplus / as sysdba

SQL*Plus: Release 11.1.0.6.0 - Production on Tue May 26 14:24:13 2009

Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Release 11.1.0.6.0 - Production

SQL> execute dbms_connection_pool.start_pool();

PL/SQL procedure successfully completed.

通过查询特定的 DBA_CPOOL_INFO 视图确认该池已启动:

SQL> SELECT CONNECTION_POOL, STATUS, MAXSIZE

2 FROM DBA_CPOOL_INFO;

CONNECTION_POOL STATUS MAXSIZE

----------------------------------------------------------

SYS_DEFAULT_CONNECTION_POOL ACTIVE 40

然后,在 Zend Server 管理控制台的 Server Setup → Directives 页面,找到 OCI8 部分并在 oci8.connection_class 变量中设置 PHP 应用程序所使用的 DRCP 连接类的名称。该用户选择的名称允许不同应用程序的池化服务器间的逻辑划分:

vaswani-zend-f17.jpg

最后,通过向您的 oci_connect() 连接字符串中添加关键字 POOLED 使您的 PHP 应用程序使用 DRCP。虽然不是必需的,但要实现最大可扩展性,我们推荐您用 oci_pconnect() 函数替换 oci_connect() 函数。修改为使用 DRCP (drcp.php) 之前的示例如下:

table { border-collapse: collapse; }

td { border: solid 1px black; padding: 3px; }

Cities

// open database connection

$db = oci_pconnect('john', 'doe', '//achilles/orcl:POOLED');

if (!$db) {

trigger_error('Unable to connect to database', E_USER_ERROR);

}

// formulate and parse query

$sql = 'SELECT * FROM CITIES';

$stmt = oci_parse($db, $sql);

// execute query

oci_execute($stmt);

// iterate over result set

$count = 0;

echo '

while ($row = oci_fetch_object($stmt)) {

echo '

';

echo '

' . $row→CITY_ID . '';

echo '

' . $row→CITY_NAME . '';

echo '

';

$count++;

}

echo '


';

echo $count . ' record(s) found.';

// close connection

oci_free_statement($stmt);

oci_close($db);

?>

唯一的更改是连接调用。无需更改应用程序。您还可以指定服务器连接通过 $ORACLE_HOME/network/admin/tnsnames.ora 文件进行汇集,如以下示例所示:

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = achilles)(PORT = 1521))

(CONNECT_DATA =

(SERVER = POOLED)

(SERVICE_NAME = orcl)

)

)

您的连接调用将如下所示:

$db = oci_pconnect('john', 'doe', 'ORCL');

注意,DRCP 不能在尚无 Oracle 11g 库的 Mac OS X 中使用,而且在任何情况下,Zend Server 的商业版在 Mac OS X 上都不受支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值