加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

关于PHP的内存使用情况

发布时间:2020-12-13 16:49:58 所属栏目:PHP教程 来源:网络整理
导读:Windows上的我的 PHP应用程序停止显示“内存不足(分配422313984)(试图分配45792935字节)”. 我无法理解为什么它停止了,因为我的机器有4GB的物理内存,我在PHP.ini文件中设置了memory_limit指令为-1.我也重启了Apache. 我认为4GB足以分配超过422313984 4579293
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.常见原因包括:

>使用太多内存的脚本.
> PHP解释器中的内存泄漏或错误.

SimpleXML绝不是轻量级扩展.相反,它的易用性和便利功能需要付出高昂的代价:高资源消耗.即使没有看到一行代码,我也可以确保SimpleXML完全不适合创建包含30,000个项目的XML文件.使用2GB RAM的PHP脚本只能取消整个服务器.

没有人喜欢在项目中间更改基础库,但您最终还是需要这样做. PHP提供了一个名为XMLWriter的拉解析器.它实际上并没有那么难用,它提供了两个好处:

>它的资源密集程度较低,因为它不会创建SimpleXML使用的复杂对象.
>你可以flush partial results提交.
>甚至可以write to file directly.

有了它,我确信您的2 GB脚本可以运行几MB.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读