首页 > 软件开发 > PHP >

如何解决 PHP Fatal error: Allowed memory of

来源:互联网 2023-03-16 19:20:47 261

在导出订单数据的时候,当订单量达到13849的时候,页面就直接返回:500了。查看nginx日志,错误信息如下:fUC办公区 - 实用经验教程分享!

如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

问题描述

  • 1

    fUC办公区 - 实用经验教程分享!

    从nginx日志中可知,是内存不够用了,默认一个php进程允许占用的内存是134217728bytes,而这个php进程还需要1048560bytes内存才能往下执行。fUC办公区 - 实用经验教程分享!

    在php.ini中有关于内存的限制:fUC办公区 - 实用经验教程分享!

    memory_limit = 128M//128M=131072K=134217728bfUC办公区 - 实用经验教程分享!

    我可以把这个值改伟宋侵的大信泛一点来解决问题。fUC办公区 - 实用经验教程分享!

    如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

  • 2

    但为什么才1万多数据就占去了128M的内存那?fUC办公区 - 实用经验教程分享!

    于是用 echo__LINE__.":".memory_get_usage(),"称吐br>";fUC办公区 - 实用经验教程分享!

    逐行看程序内存占用,以此来优化内存fUC办公区 - 实用经验教程分享!

    如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

  • 2此文章非法爬取自百度经验
  • PHP内存优化方法

  • 1

    去掉多余函数和变量fUC办公区 - 实用经验教程分享!

    代码中的空格和注释都不影响内存的占用,但调用文件中多余的函数和变量就会占用内存,于是把不用的函数方法和变量删除掉,尤其是一些复制过来的文件,会有很多不需要的方法,一定要删掉fUC办公区 - 实用经验教程分享!

    如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

  • 2

    不要声明多余的变量fUC办公区 - 实用经验教程分享!

    fUC办公区 - 实用经验教程分享!

    如:fUC办公区 - 实用经验教程分享!

    如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

  • 3

    不用的变量及时释放掉fUC办公区 - 实用经验教程分享!

    有些变量都是过程变量,尤其是做一些数据格式化转换的时候,一些原始的,过度的变量要及时释放掉fUC办公区 - 实用经验教程分享!

    如:fUC办公区 - 实用经验教程分享!

    如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

  • 4

    优化函数返回结果大小fUC办公区 - 实用经验教程分享!

    fUC办公区 - 实用经验教程分享!

    函数尽可能的只返回每次调用所需要的结果集fUC办公区 - 实用经验教程分享!

    比如:要得到的是:$datastructfUC办公区 - 实用经验教程分享!

    如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

  • 5

    优化mysql返回结果集的大小(效果显著)fUC办公区 - 实用经验教程分享!

    fUC办公区 - 实用经验教程分享!

    fUC办公区 - 实用经验教程分享!

    查询了一下表中数据的大小 (看图)fUC办公区 - 实用经验教程分享!

    fUC办公区 - 实用经验教程分享!

    大小:2.52MB.fUC办公区 - 实用经验教程分享!

    fUC办公区 - 实用经验教程分享!

    再看看结果集在PHP中占的内存:fUC办公区 - 实用经验教程分享!

    内存耗用:(76201912-1086264)/1024/1024 = 71.64MfUC办公区 - 实用经验教程分享!

    fUC办公区 - 实用经验教程分享!

    哇 PHP的数组太占内存了fUC办公区 - 实用经验教程分享!

    网上有人做过数组占用内存的测试,如下:fUC办公区 - 实用经验教程分享!

    如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

    如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

  • 6

    PHP中的数组是用一种HASH结构(HashTable)来实现的,fUC办公区 - 实用经验教程分享!

    关于PHP中的数组的实现,鸟哥有一篇文章介绍过:深入理解PHP之数组(遍历顺序)fUC办公区 - 实用经验教程分享!

    那么我们怎么优化那?fUC办公区 - 实用经验教程分享!

    1:缩小返回的结果集,一开始是查询出了所有字段,改成 只返回需要的字段fUC办公区 - 实用经验教程分享!

    2:在1的基础上,我们再使用mysql_unbuffered_query来查询数据fUC办公区 - 实用经验教程分享!

    如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

  • 7

    缓存里尽量只存需要的信息fUC办公区 - 实用经验教程分享!

    目前我们常用redis memcache做缓存,如果存全量信息,随着数据量的增加,全量信息会成倍数的增加,都很消耗机器内存fUC办公区 - 实用经验教程分享!

    如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

  • 8

    设计数据库的时候,把数据库字段设计的尽可能小(前提是满足需求)fUC办公区 - 实用经验教程分享!

    1:为了省空间 2:为了查询的时候fUC办公区 - 实用经验教程分享!

    如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

  • 9

    这样基本就搞定了。fUC办公区 - 实用经验教程分享!

    fUC办公区 - 实用经验教程分享!

    推荐以下鸟哥的三篇文章:(http://www.laruence.com/)fUC办公区 - 实用经验教程分享!

    深入理解PHP内存管理之谁动了我的内存fUC办公区 - 实用经验教程分享!

    深入理解PHP之数组(遍历顺序)fUC办公区 - 实用经验教程分享!

    PHP中的Hash算法fUC办公区 - 实用经验教程分享!

    如何解决 PHP Fatal error: Allowed memory offUC办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!fUC办公区 - 实用经验教程分享!


    标签: PHPMYSQL

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码