我正在尝试为某些PHP脚本增加允许的内存.不管我做什么,例如:
ini_set('memory_limit', '512M');
Run Code Online (Sandbox Code Playgroud)
...脚本总是耗尽大约300MB的内存:
Fatal error: Out of memory (allocated 25165824) (tried to allocate 343810589 bytes) in \\Foo\phpQuery\phpQuery.php on line 255
Run Code Online (Sandbox Code Playgroud)
我通过几种方式验证了memory_limit实际上已经改变了.问题似乎是PHP无法物理分配总共300 MB的内存(25165824字节+ 343810589字节= 352 MB).
我已经在两台不同的基于Windows的计算机上尝试过PHP/5.3.0和PHP/5.3.9,并且具有以下规范:
我知道使用一半的物理RAM会强制交换并减慢速度,但我只需确保脚本实际工作,以便可以部署到实时服务器.我也尝试过更大的值(产生相同的错误)和更小的值(使我的脚本达到极限或使Apache崩溃).
这个明显硬编码内存限制的来源是什么?
更新#1:我已经使用Windows Server 2003框(实际上是VMWare虚拟机)进行了进一步测试.我已经将"物理"RAM增加到2 GB,并且我已经验证了分页文件可以增长到1152 MB.任务管理器显示当前事务负载为886 MB,并且有1.5 GB的可用物理内存.但是,我得到了完全相同的数字相同的错误.
更新#2:正如我所说,该memory_limit指令没问题.它出现在两者ini_get()和phpinfo().你得到的错误信息与我的略有不同; 我的表示PHP 崩溃.请比较:
Out of memory (allocated 25165824) (tried to allocate 343810589 bytes)
Allowed memory size of 25165824 bytes exhausted (tried to allocate 343810589 bytes)
Run Code Online (Sandbox Code Playgroud)
我将尝试编写一个脚本来重现问题并报告回来.
| 归档时间: |
|
| 查看次数: |
583 次 |
| 最近记录: |