本文共 1624 字,大约阅读时间需要 5 分钟。
最近突然想到了oci_8的拓展,PHP的一个拓展,有很多函数,翻了翻手册,看了看ThinkPHP的DB以及DBOracle的驱动文件
这才想明白其中的oci_connect和oci_pconnect以及oci_new_connect的来源
代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /** * 连接数据库方法 * @access public */ public function connect( $config = '' , $linkNum =0) { if ( !isset( $this ->linkID[ $linkNum ]) ) { if ( empty ( $config )) $config = $this ->config; $pconnect = ! empty ( $config [ 'params' ][ 'persist' ])? $config [ 'params' ][ 'persist' ]: $this ->pconnect; $conn = $pconnect ? 'oci_pconnect' : 'oci_new_connect' ; $this ->linkID[ $linkNum ] = $conn ( $config [ 'username' ], $config [ 'password' ], $config [ 'database' ],C( 'DB_CHARSET' )); //modify by wyfeng at 2008.12.19 if (! $this ->linkID[ $linkNum ]){ $this ->error(false); } //这里的有两个函数oci_pconnect和oci_new_connect是oci8拓展里的,oci_connect也是 //例如:$conn = oci_connect('system','oracle','192.168.109.132:49161/xe'); //192.168.109.132:49161/xe--->这种字符串连接是简单连接,需要在oracle10g以上才能使用 //完整 Oracle Net 连接字符串提供了足够的连接灵活性。 //$db = MYDB2 = (DESCRIPTION = //(ADDRESS = (PROTOCOL = TCP) //(HOST = mymachine.mydomain)(PORT = 1521)) //(CONNECT_DATA= //(SERVER = DEDICATED) //(SERVICE_NAME = MYDB.AU.ORACLE.COM)))'; //oci8 扩展始终需要查找 Oracle 库和消息文件。找不到正确的文件将导致 PHP 返回 Oracle“ORA-12705:Cannot access NLS data files or invalid environment specified”。 // 标记连接成功 $this ->connected = true; //注销数据库安全信息 if (1 != C( 'DB_DEPLOY_TYPE' )) unset( $this ->config); } return $this ->linkID[ $linkNum ]; } |
不是造轮子,而是去理解别人是如何来组织原生的写法,我觉得ThinkPHP的一些处理还是不错的。
最近开始觉得oci_8的函数可以看着手册来试一下。有新的感触会写在这里
本文转自 jackdongting 51CTO博客,原文链接:http://blog.51cto.com/10725691/1953081
转载地址:http://vnmjo.baihongyu.com/