ocienvcreate php 失败_PHP的oci8扩展详解

要连接到 Oracle,可以使用 PHP 的 oci_connect() 调用:$c = oci_connect($username, $password, $dbname)每个 oci_connect() 连接均存储在高速缓存中。当同一脚本中出现第二个 oci_connect() 时,将返回前一个高速缓存的连接。脚本完成时将清除该高速缓存。

Oci_new_connect() 提供了一个完全独立的连接。连接之间相互独立。这使您可以同时执行多个数据库事务:$c = oci_new_connect($username, $password, $dbname)持久连接在 PHP 脚本结束时不会自动关闭。它们仍保持打开状态,以便在其他脚本中重用:$c = oci_pconnect($username, $password, $dbname)当打开连接的开销很大时,使用持久连接很有好处。开销是否大取决于应用程序要求以及实现问题(如 web 服务器和数据库是否位于同一主机中)。

持久连接的缺点是始终使用 Oracle 资源,即使在无人访问应用程序或数据库的情况下也是如此。如果 Apache 创建了多个服务器进程,则每个进程将分别与数据库建立一组连接。可以使用 php.ini 参数调节持久连接的资源使用。oci8.max_persistent:该参数限制高速缓存的持久连接数。达到该限制时,所有 oci_pconnect() 调用均被视为 oci_connect() 调用。将该参数设置为 -1(默认值)表示没有限制。

oci8.persistent_timeout:Apache 进程保持空闲持久连接的时间(以秒为单位)。每当 PHP 脚本完成时,无论脚本是否调用 oci8 函数,都将执行到期检查。将该参数设置为 -1(默认值)表示没有超时。如果连接已过期,oci_pconnect() 将创建一个新连接。

oci8.ping_interval:oci8 在执行 oci_pconnect() 过程中执行 ping 操作之前经过的秒数。如果该参数设置为 0,则 PHP 将在每次调用 oci_pconnect() 时对数据库执行 ping 操作。要禁用 ping,将该值设置为 -1。默认值为 60 秒。如果 ping 确定连接不可用,则将创建一个新连接。良好的应用程序设计将透明地恢复大多数故障。尽管像 Oracle 这样的系统比较稳定,但任何应用程序均存在一些潜在的故障点,其中包括网络、硬件以及用户操作(如关闭数据库)。Oracle 本身可以经过配置来关闭空闲连接。DBA 可能已经使用 CREATE PROFILE IDLE_TIMEOUT 安装了用户配置文件。或者,Oracle Net 层可能已经使网络超时。

Oci_pconnect() 将始终检查 Oracle 客户端设置,以便根据上次从服务器收到的任何响应判断服务器是否可用。这是一个快速操作。另外设置 oci8.ping_interval 将对服务器执行物理 ping 操作,这将导致所谓的网络“往返”,并且将对可伸缩性带来不利影响。由于在连接检查之间以及当您实际使用连接时,数据库或某些数据仍有可能不可用,因此为了实现最高的可用性和可伸缩性,通常建议您不要使用 oci8.ping_interval,而是在应用程序代码中进行错误恢复。

当然,越来越易于使用的 ping 功能还是为许多小型应用程序带来了很多好处。

确保您了解应用程序连接的生存期。虽然应尽可能重用连接,但您也完全可以根据需要创建新连接以及关闭连接。每个连接都将占用一些 Oracle 内存,因此关闭空闲连接可以减少总负载。

连接字符串

最让人感到困惑的当数连接字符串。常见的 Oracle 错误“ORA-12514 TNS:listener does not currently know of service requested in connect descriptor”即使花费很长时间仍难以解决。

DB 名称可以为:简单连接字符串

完整连接字符串

tnsnames.ora 别名简单连接字符串

简单连接字符串类似于 JDBC。它指定主机名、端口号和 Oracle 数据库服务名称://hostname:port/service_name对于使用默认端口 1521 的 Oracle 数据库特别版,只需使用“//localhost/XE”。$c = oci_connect('hr',

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值