ACI8连接处理和连接池¶
连接功能¶
ACI8扩展为连接到神通数据库提供了三种不同的功能。
标准连接函数是 aci_connect() 。
这将创建到神通数据库的连接,并返回后续数据库调用所使用的资源。
就完成所需的时间而言,连接到神通数据库服务器是一项相当昂贵的操作。
aci_connect() 函数使用连接的持久缓存,可以在不同的脚本请求之间重用。
这意味着每个PHP进程(或Apache子进程)的连接开销通常只发生一次。
aci_connect() 都使用连接缓存;如果对 aci_connect()
的多次调用在给定的脚本中使用相同的参数,那么第二次和后续调用将返回现有的连接句柄。
aci_connect() 使用的缓存在脚本运行结束时或连接句柄显式关闭时被清理。
这个缓存特性意味着这两个句柄不是事务隔离的(它们实际上是同一个连接句柄,因此没有任何类型的隔离)。
如果应用程序需要两个独立的、事务隔离的连接,那么使用aci_new_connect()。
当PHP进程终止时, aci_connect() 缓存将被清除,任何数据库连接都将关闭,
因此有效使用持久连接要求PHP是Apache模块或与FPM一起使用,或类似。当PHP与CGI一起使用或通过命令行使用时,
持久连接不会比 aci_connect() 有任何好处。
函数 aci_new_connect() 始终会创建到神通数据库服务器的新连接,
而不管其他连接可能已经存在。高流量web应用程序应避免使用 aci_new_connect() ,
尤其是在应用程序最繁忙的部分。
用户可以关闭持久连接,从而更好地控制连接资源的使用。当没有PHP变量引用持久连接时,
比如在PHP用户函数的作用域末尾,持久连接现在也将自动关闭。这将回滚任何未提交的事务。
对持久性连接的这些更改使它们的行为与非持久性连接类似,从而简化了接口,从而提高了应用程序的一致性和可预测性。