通过使用递归函数获取 500 内部错误


Getting 500 internal error by using recursive function

我在调用下面的递归函数时遇到了内部错误。
下面的函数正在检查矩阵表中的引用 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错误将消失。