php - 重新调用递归函数的最合适方法是什么?

标签 php mysql

有人告诉我 authCode();没有以最有效的方式重新调用,因为它将“堆叠大量数据库连接,快速打开和关闭它们,这在资源方面是昂贵的”。

这是我的代码:

function authCode() {

$num1 = mt_rand(1, 2147483647);
$num2 = mt_rand(1, 2147483647); 
$authcode = dechex($num1).dechex($num2);;

include("../db/71cfde725dc86.php");

$conn = mysql_connect($db_host, $db_uname, $db_pword) or die("Couldn't connect because ".mysql_error()); mysql_select_db($db_name);
$query = "SELECT COUNT(*) FROM records WHERE valcode='$authcode'";
$result = mysql_query($query) or die("SELECT query failed due to ".mysql_error());

$count = mysql_fetch_assoc($result);
$row = $count['COUNT(*)'];

if($row > 0)
{
    $authcode = authCode();
}
else 
{
$query2 = "INSERT INTO records (valcode) VALUES ('$authcode')";
$result2 = mysql_query($query2) or die("INSERT query failed due to ".mysql_error());
}

mysql_close($conn);

return $authcode;
}

authCode();

我专注于 $authcode = authCode(); 以及数据库连接直到结束才关闭的事实,这意味着如果它重新调用连接仍然打开(所以我听说过)?

我是否应该在 $row 分配后关闭连接,然后在 else 语句中重新打开和关闭?

最佳答案

您应该做的是在第一次调用 authCode() 之前打开连接,并将其作为参数传入。这样您就可以对所有调用使用单一连接。

关于php - 重新调用递归函数的最合适方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6929442/

相关文章:

php - 将 mysql 结果与 php 类一起使用的最有效方法

php - 在浏览器中预览邮件通知

php - 在 mysql 中连接表以获得单一结果的正确方法

php - 选择查询未正确返回

mysql - 导入数据库数据后,启用二进制日志记录只是将其删除

mysql - SQL 仅选择列上具有最大值的行

php - 根据另一个数组的键对数组元素进行排序

php - Paypal DoDirectPayment 无需用户在场(例如使用 cron 作业)

php - 受密码保护的相册 PHP/MySQL 服务器负载

MySQL:在日期时间范围内每小时获取计数最多的相同值条目(统计模式)