为多个cron作业维护单个DB连接

时间:2016-09-22 09:50:26

标签: php mysql cron connection-pooling

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

我有多个独立的cron作业正在运行以插入/更新DB。那也是每运行15分钟。最近超出了max db连接。

是否有维护数据库连接的服务?比如使用node.js或javascript 或者是否可以使用php连接池?

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

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

但后来没有按预期工作。每个cron作业都会生成与mysql的单独连接。

1 个答案:

答案 0 :(得分:0)

PHP中没有连接池功能,但有些简短,你可以使用“mysql_pconnect”来实现它。同时,使用mysql_pconnect时必须非常小心。

根据PHP mysql_pconnect:

mysql_pconnect()与mysql_connect()非常相似,但有两个主要区别。

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

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

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

更多信息点击here

你可以做一件事,你需要关闭所有数据库连接,这是理想的超过30秒或1分钟,这可以通过cron本身完成。

其次,您必须在cron脚本中打开一个连接,并且必须在执行脚本后将其关闭。