可扩展 可伸缩的 Oracle 与 PHP$stmt = OCIParse($db, $query); 这些设置指示 OCI 客户库每次内部缓冲 1000 行,对任何返回超过一行的查询提供积极的回报。1000 是个相当随意的数字 — 在选择预取缓冲区大小时仅有的限制因素是:
管理与 Oracle 的交互操作 现在您已看到了一些通过 PHP 改进与 Oracle 数据库交互操作方式的技术。对您的程序作出这类结构性更改是管理上的争论焦点,因为它通常需要对代码中的很多地方作出不少更改。解决问题的正确方法是将所有的数据库访问代码封装在一个打包的库中,这样就可以对怎么样准备和执行查询等内部问题进行更改,而不必审计您的全部编码内容。 我说的是“打包的库”而不是“抽象层”,因为很多所谓的抽象层强调不仅向您隐藏低级数据库调用的细节,而且还隐藏 SQL。它们实施各自的与数据库无关的语法,以便您能够毫不费力地将您的应用程序改到其他数据库中。我认为这种方法存在三个主要问题:
用于 PHP 的两种最流行的数据库封装/抽象库是 PEAR::DB(从 http://pear.php.net/ 获取)和 ADODB(从 http://php.weblogs.com/adodb 获取)。不管这两种实施方法的流行程度(和品质)怎么样,,我通常从头开始实施自己的数据库打包的库。我不需要 ADODB 或 PEAR::DB 中的很多高级特性,而保持库的简单性可以使它速度更快并且更易于维护。没有复杂的特性,一个紧密的库可以用大约 100 行代码来完成它。如果提供了 Oracle 数据库和语句句柄中所执行的信息量,则我更喜欢面向对象的封装,尽管我也曾看到过效果良好的程序性封装。 清单 1显示了一个完整的打包的库,它包含一个围绕数据库连接的包 (DB_Oracle) 和一个围绕游标的包 (DB_OracleStatement)。 这些类的目标是使对数据库交互操作的管理变得简单、直接和清晰。以下显示了怎么样使用它们来执行一个简单的查询: <?php 由于封装是面向对象的,通过对类进行扩展,可以轻易隐藏所有的连接参数。这对于提供一个简单的、无参数的连接类非常有用,如下所示: class DB_Oracle_Test extends DB_Oracle {
这个新类向程序员隐藏了所有的连接标准,允许透明地更改实例的 TNSNAME 或连接标准。还要注意怎么样向用户隐藏 OCISetPreFetch() 调用。如果您需要删除它,或者需要添加另一个连接修改器,其操作很容易,并且对您的所有连接起作用。这就是使用打包的库的价值。 使您的进程更加高效 在文章的开始部分,我提到我将帮助您不遗漏在 Apache 中为满足可伸缩性需求而减少的子进程。利用更少资源来完成任务的三种最简单方法是:
更多相关文章
|
推荐文章
精彩文章
|