在查看一些现有代码时,我意识到我不断打开和关闭远程DB连接,以获取有关数百台设备的信息。我现在正试图通过将数据库连接存储在数组中并在创建之前按名称检查特定连接是否已经存在来解决这个问题
$mysql_connections = array();
$devices = mysql_query("SELECT * FROM devices ORDER BY name ASC", $dp_conn);
while($row = mysql_fetch_array($devices))
{
$whmcs_site = $row['whmcs_site'];
$whmcs_id = $row['whmcs_id'];
/* WHMCS Service */
if ($whmcs_site != "" && $whmcs_id != "")
{
$site = get_site_details($whmcs_site, $dp_conn);
if (in_array($site['name'], $mysql_connections))
{
echo "Connection already exists</br>";
$whmcs = $mysql_connections[$site['name']];
}
else
{
echo "No connection exists...creating it named" . $site['name'] . " </br>";
$whmcs = whmcs_connect($site);
$mysql_connections[$site['name']] = $whmcs;
}
只有两个可能的MySQL数据库,所以in_array()检查在存储这两个数据库后应该返回true。出于某种原因,它从未找到现有的条目,因此它继续在每次迭代中生成新的连接。有人能指出这里的问题吗?
您需要检查array_key_exists()
或类似内容,而不是in_array()
,因为您正在比较键。