我正在开发一个连接到节点并使用 PHP 获取它们的连接数据的工具。
我正在使用的架构是一个 Worker,它在构造函数中分叉自己的次数与必须处理的节点一样多,连接到节点并检索它们的连接数据(大约 5 个字段,字符串相对较短,整数较大)。
我面临的问题是,当一个不同的童工完成他的工作时,数据库连接会断开。一种方法是在每次孩子想要访问数据库时建立一个新的 mysql 连接。这是一个很好的做法吗?
为了授予数据库访问权限,我实现了一个类似单例的数据库类,但实际上该类并没有按预期使用一个连接,而是为每个 childworker 使用一个 mysql 连接。(我读到了“ShareNothing”或类似的现象)
这很关键——我听说 mysql 连接限制默认应该在 100 左右。虽然我目前维护大约 60 个节点,但节点数量可能会在接下来的几个月内增加。我目前工作的公司在使用各种组件时非常严格,所以齿轮人不是一个选择。
我正处于缺乏想法的地步。我应该如何设计数据库访问权限来为越来越多的节点授予可扩展性?
编辑:应用程序通过 PHP CLI 运行。worker 启动他们的 run 函数,该函数包含一系列被 while 循环包围的动作。序列是这样构建的(伪代码 INC):
while(allowedToRun())
if(isConnectionStillOpen())
fetchDataFromNodes()
enterIdleRoutine
else
exit
因此,该应用程序旨在无限期运行