你的位置:HBcms宏博内容管理系统 PHP技术 正文
PHP技术
  1. 专用主机
内容搜索
热门内容
  1. PHP官方网站,php官方..
  2. 建网站需要多少钱? 建..
  3. PHP ASP比较:PHP比AS..
  4. PHP6下载,php6介绍和..
  5. php程序员前途,mysql..
  6. 宏博cms和北京易体验合..
  7. SMTP判断邮箱是否存在..
  8. PHP生成静态页面详解
  9. 用PHP与XML进行网站编..
  10. 美国Hostmonster虚拟主..
推荐内容
  1. PHP官方网站,php官方..
  2. 把握商机:免费成为 H..
  3. 用PHP与XML进行网站编..
  4. [转]PHP突出开源优势要..
  5. 在线操作系统----TOMO..
  6. 用PHP实现验证码功能
  7. PHP生成静态页面详解
  8. 宏博cms和北京易体验合..
  9. Linux服务器php虚拟主..
  10. php程序员前途,mysql..
可能是PEAR:config组件的bug
  •  添加时间:2006-08-04 发表时间:2006-08-04 人气:225
  • 但栏目超过一定数目时候,批量将栏目数据导入配置文件时,在设置了memory_limit 的环境会出现错误:

    Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 44 bytes)

    147个栏目,memory_limit =40M 都不够用(才导入70个栏目就报错了)!

     

     

    检查了很久,发现错误可能存在于config组件:

    Config之前占用内存。。2897264
    Config后占用内存。。2897264
    parseConfig后占用内存。。3667464  =》这里一下就消耗了近1M的内存,50个栏目,就要50M内存
    toString后占用内存。。3667464

    发现了问题,如何修改呢? 我需要释放内存,只能从程序动手。

    var_dump了parseConfig,发现是一个超级大的obj,

    查看config源代码后,决定暂时扩展一下toString函数,将 $obj 从内存中释放

    unset() 发现没作用。

    $obj = ''; 或 $obj = NULL;   倒是很有效。

    测试效果如下:

    Config之前内存。。2897264
    Config内存。。2897264
    parseConfig内存。。3667464
    toString内存。。2969008

     

    Config之前内存。。2898160
    Config内存。。2898160
    parseConfig内存。。3668360
    toString内存。。2970240

     

    Config之前内存。。2897112
    Config内存。。2897112
    parseConfig内存。。3667312
    toString内存。。2968352

     

    达到了预期目的,以后有精力再花时间好好研究一下。

    估计是config作者的一个疏忽,毕竟像我们这样使用它的情况很少。


     

  • 点这里复制本页地址发送给您QQ/MSN上的好友
  • 相关文章
  • 相关评论
  • 本文章所属分类:首页 PHP技术