【问题标题】:PHP Fatal Error - memory runs outPHP致命错误 - 内存耗尽
【发布时间】:2015-07-02 13:19:40
【问题描述】:

我有一个表格数据tb_Agroindustri 有很多坐标,我使用带有扩展名 yii2-google-maps-library 的 yii2 在谷歌地图上显示它。
这是我的代码:

foreach ($feederWilayah as $value) {
   $idFeed = $value->id_wilayah;
      $path = Agroindustri::find()
            ->where(['id_wilayah' => $idFeed])
            ->all();

      foreach ($path as $value){
            $koord = new LatLng([
                'lat' => $value->lat,
                'lng' => $value->lng
            ]);
            $coords[] = $koord;
      }

      $polygon = new Polygon([
            'paths' => $coords,
      ]);

      // Add it now to the map
      $map->addOverlay($polygon);
      // end of show polygon
}

但我有一条错误消息:Allowed memory size of xxxxx bytes exhausted (tried to allocate xx bytes). 然后我尝试添加此代码ini_set("memory_limit","512M")。但我仍然收到错误。

我必须更改我的代码还是如何更改?有没有办法解决我的问题?如果有人可以提供教程或其他东西,那将是一个真正的帮助。我要疯了。

【问题讨论】:

  • 看起来您正在循环中执行数据库查询,然后循环遍历该结果(仍处于循环中),这意味着您的流程将在操作数量方面呈指数增长- 您可以优化的任何方式,即获取所有$idFeeds 的数组,然后使用它来进行find() 查询?
  • @scrowler 我不知道,你能给我举个例子吗?

标签: php google-maps-api-3 yii2 yii2-advanced-app


【解决方案1】:

也许你应该试试

$path = Agroindustri::find()
        ->where(['id_wilayah' => $idFeed])
        ->asArray()
        ->all();

或者用 LIMIT 来写。如果使用后也可以帮助取消设置变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-12
    • 2017-12-13
    • 1970-01-01
    • 2012-04-20
    • 2017-06-21
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多