【问题标题】:Maintain single DB connection for multiple cron jobs为多个 cron 作业维护单个数据库连接
【发布时间】:2017-01-30 20:06:14
【问题描述】:

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

我有多个独立的 cron 作业正在运行以插入/更新数据库。这也是每 15 分钟运行一次。最近超出了最大数据库连接数。

有没有维护数据库连接的服务?喜欢使用 node.js 或 javascript 或者是否可以使用 php 进行连接池?

我尝试像这样使用 PHP 进行持久连接,

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

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

【问题讨论】:

    标签: php mysql cron connection-pooling


    【解决方案1】:

    PHP 中没有连接池功能,但是您可以使用“mysql_pconnect”来实现它。同时,在使用mysql_pconnect的时候也要非常小心。

    根据 PHP mysql_pconnect:

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

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

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

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

    更多信息请点击here

    您可以再做一件事,即您必须关闭所有数据库连接,这对于 30 秒或 1 分钟以上是理想的,这可以通过 cron 本身来完成。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 2019-08-04
      • 1970-01-01
      相关资源
      最近更新 更多