我在 Windows+Apache 上的 PHP 应用程序停止显示“内存不足(已分配 422313984)(试图分配 45792935 字节)”。
我不明白为什么它会停止,因为我的机器有 4GB 物理内存,并且我memory_limit
在 PHP.ini 文件中为 -1 设置了指令。我还重新启动了 Apache。
我认为 4GB 足以分配超过 422313984+45792935 字节的内存。
是否有其他设置可以为 PHP 或 Apache 使用内存?
我还总结了性能计数器。它显示机器的最大内存使用量为 2GB。而httpd进程使用了1.3GB。
我无法显示代码,但实际上代码从 DBMS 获取 30000 行,每行 199 字节,并simplexml_load_string()
在循环中使用解析为 XML。
如果数据很小或缩短循环期限(如 30000 到 1000),则代码通常已完成。
另一种情况是启动Apache后第一次运行会成功。
我认为发生了一些内存泄漏。
实际上我做了 echoPHP_INT_SIZE
和 PHP 显示 4。所以也许我的 PHP 是 32 位版本。
如果内存使用问题来自这个版本的 PHP,正如 Álvaro G. Vicario 指出的那样,我可以通过更改为 64 位版本的 PHP 来解决它吗?我怎样才能获得 64 位版本的 PHP for Windows?我在http://windows.php.net中找不到它