关于php内存溢出的问题

今天一上班,发现维护的网站除了问题,看了debug之后,总是出现
Fatal error: Out of memory (allocated 243007488) (tried to allocate 36 bytes)
上网查了后看到是php在执行代码时,内存不够。随机修改php.ini中的memory_limit的值,设置成512。
重启php,测试还是失败,程序还是报之前的错。之后查看了代码和数据库,发现在控制器的方法有一个全表查询的代码,导致内存溢出。

$ret = Db::name('locus') -> select();
$time = array();
foreach ($ret as $key => $value){
      $time[] = $value['time'];
      if(strtotime($time[$key]) == false){
            Db::name('locus') ->where('time','=',"$time[$key]") ->delete();
      }
}
上面这个代码完全是从全表来查,数据量很大。
删除这一段代码,测试成功。

从以上可以得出,代码中一定要避免大数据量的查询,在条件允许的条件下可以执行。要么做严谨的try catch,要么去分表,这样保证数据的正常使用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容