我在调用下面的递归函数时遇到了内部错误。
下面的函数正在检查矩阵表中的引用 ID(一种类型的父 id),如果矩阵表中的引用 ID 可用,那么执行应该结束并返回该 id,但如果在矩阵表中找不到该 id,则再次从该旧引用 id 的成员表中获取引用 id(enroller_id)(存储在 $ref_id 中)并再次调用该函数,它将继续调用,直到它获得该特定 id 是在矩阵中可用或不可用,最后如果找不到,它将返回默认 id($default_ref_id)。
但是我不知道为什么我在那里遇到内部服务器错误,我也尝试过将max_execution_time 30 增加到 50 或 100,但无法解决这个问题。
如果您能帮助我解决这个问题,那就太好了,因为在过去的 3 到 4 个小时里我一直被这个问题困住了。
这是我在那里创建的函数:
function findReferralMember($ref_id)
{
$default_ref_id=1;
$count_ref_member = GetSingleValue("matrix","Count(*)","member_id='".$ref_id."'");
if($count_ref_member > 0)
{
return $ref_id;
}
else
{
$ref_id = GetSingleValue("members","enroller_id","member_id='".$ref_id."'");
findReferralMember($ref_id);
}
return $default_ref_id;
}
你的代码处于无限循环中。
对函数findReferralMember
的每次调用都会再次调用findReferralMember
。 $count_ref_member
变量永远不会大于零。 这个无限循环永远不会返回,并最终吹出服务器上的堆栈。 这就是返回 500 错误消息的原因。
跟踪您的代码,看看为什么会发生这种无限循环。 修复无限循环,500错误将消失。