小编Fab*_*ção的帖子

减少 PHP 中递归函数的内存使用

我在 PHP 中有一个递归函数,它在 API 中循环,只允许您一次恢复 200 条记录。

但由于这个 API 的响应延迟非常高,我们决定使用本地中间数据库,我在其中添加这些记录,并且相同的记录将显示在网站上。

然而,由于这个 API 有超过 30000 条记录,因此递归函数会消耗大量内存,因为在 30000 条记录的情况下,它必须递归调用超过 1500 次,最终导致著名的 StackOverflow。

我想知道是否有一种手动方法可以通过再次调用该函数来清除该函数的内存,而不会丢失它的值。

代码示例:

public function recursive ($index = 0, $offset = 200) {
   $api = GetConectApi ($index, offset)-> Getrecords ();
   foreach ($api $value) {
      \\Here is my necessary loop
   }
   if (count ($API) > 0) {
      $this Recursive ($index + 200, $offset + 200);
   }
}
Run Code Online (Sandbox Code Playgroud)

我想找到一种方法,当它再次调用递归函数时,消除之前的分配,而不丢失传递的参考值。

php recursion

3
推荐指数
1
解决办法
2415
查看次数

标签 统计

php ×1

recursion ×1