私はauthCode();最も効率的な方法で再呼び出しされているわけではありません。なぜなら、「DB接続をたくさん積み重ね、リソースを高価にしてすぐに開き、閉じる」ためです。ここで再帰関数を再呼び出しする最も適切な方法は何ですか?
は私のコードです:
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文で再度開いて閉じる必要がありますか?
ありがとうございます。私はmd5ハッシュを使用するように切り替えます。ちょうどそれらを使用することについて学んだ:)。 – Fireworksable