2016-09-22 35 views
2

是否可以为单独的cron作业维护单个数据库连接或对象?脚本是用PHP编写的。为多个cron作业维护单个数据库连接

我有多个独立的cron作业运行插入/更新数据库。这也是每15分钟运行一次。最近超过max db连接。

是否有任何服务来维护db连接?像使用node.js或javascript 或者是否有可能使用php进行连接池?

我试图使用PHP这样的持久连接,

$link = mysqli_connect('p:localhost', 'fake_user', 'my_password', 'my_db'); 

但随后无法按预期工作。每个cron作业生成到mysql的单独连接。

回答

0

PHP中没有连接池功能,但有一点可以通过使用“mysql_pconnect”来实现。同时,使用mysql_pconnect时必须非常小心。

根据PHP mysql_pconnect:

mysql_pconnect()行为很像mysql_connect()函数有两个主要区别。

首先,连接时,函数首先会尝试找到已经用相同的主机,用户名和密码打开的(持久)链接。如果找到一个,那么它的标识符将被返回而不是打开一个新的连接。

其次,当脚本执行结束时,不会关闭到SQL服务器的连接。相反,链接将保持打开以供将来使用(mysql_close()不会关闭由mysql_pconnect()建立的链接)。

这种类型的链接因此被称为“持久性”。

更多信息请点击here

你可以做到这一点,你必须关闭所有的数据库连接,是理想的超过30秒或1分钟一两件事,这可以通过自身的cron来完成。其次,你必须在你的cron脚本中打开一个单独的连接,并且在脚本执行完之后必须关闭它。