在查看我现有的一些代码时,我意识到我一直在打开和关闭远程数据库连接,以获取有关数百个设备的信息。我现在试图通过将数据库连接存储在一个数组中并在创建之前检查特定连接是否已按名称存在来解决此问题。
$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;
}
只有2个可能的MySQL数据库,所以in_array()检查应该在存储它们之后返回true。由于某种原因,它永远不会找到现有的条目,因此它继续在每次迭代时生成新的连接。任何人都可以指出问题在这里吗?
答案 0 :(得分:3)
您需要检查array_key_exists()
或类似内容,而不是in_array()
,因为您要比较密钥。