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用户函数的作用域末尾,持久连接现在也将自动关闭。这将回滚任何未提交的事务。

对持久性连接的这些更改使它们的行为与非持久性连接类似,从而简化了接口,从而提高了应用程序的一致性和可预测性。