关于PHP的内存使用情况
Windows上的我的
PHP应用程序停止显示“内存不足(分配422313984)(试图分配45792935字节)”.
我无法理解为什么它停止了,因为我的机器有4GB的物理内存,我在PHP.ini文件中设置了memory_limit指令为-1.我也重启了Apache. 我认为4GB足以分配超过422313984 45792935字节内存. 是否有其他设置为PHP或Apache使用内存? 我还总结了性能计数器.它显示MAX内存占用总量为2GB. httpd进程使用1.3GB. 我无法显示代码,但实际上代码从DBMS获取30000行,每行199字节,并使用循环中的simplexml_load_string()将parsese解析为XML. 如果代码数据较小或者缩短循环项(如30000到1000),则代码通常会完成. 另一种情况是启动Apache后首次运行将成功. 我认为会发生一些内存泄漏. 实际上我做了回显PHP_INT_SIZE而PHP显示4.所以也许我的PHP是32位版本. 如果内存使用问题来自这个版本的PHP,如álvaroG.Vicario指出,请问我是否可以通过更改64位版本的PHP来修复它?我怎样才能获得64位版本的PHP for Windows?我在http://windows.php.net找不到它 解决方法
“内存不足”消息(不要与“允许的内存大小耗尽”消息混淆)总是表明PHP解释器确实耗尽了内存.没有PHP或Apache设置可以调整 – 计算机无法为PHP提供更多RAM.常见原因包括:
>使用太多内存的脚本. SimpleXML绝不是轻量级扩展.相反,它的易用性和便利功能需要付出高昂的代价:高资源消耗.即使没有看到一行代码,我也可以确保SimpleXML完全不适合创建包含30,000个项目的XML文件.使用2GB RAM的PHP脚本只能取消整个服务器. 没有人喜欢在项目中间更改基础库,但您最终还是需要这样做. PHP提供了一个名为XMLWriter的拉解析器.它实际上并没有那么难用,它提供了两个好处: >它的资源密集程度较低,因为它不会创建SimpleXML使用的复杂对象. 有了它,我确信您的2 GB脚本可以运行几MB. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |