在XAMPP

时间:2019-01-09 18:50:41

标签: php xampp

我发现XAMPP v3.3.2的内存限制设置在PHP中有一种奇怪的行为。我的计算机已安装Windows 10,而我已安装8GB of memory。在我的php.ini文件中,内存限制设置为1024M。我还制作了这个基本的php文件进行测试:

<?php

echo ini_get('memory_limit');
exit;
?>

使用不同的命令行参数运行此文件,这些是我得到的输出:

php -d memory_limit=512M test.php输出 512M
php -d memory_limit=2048M test.php输出 2048M
php -d memory_limit=4096M test.php输出以下错误消息:

PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 341351 bytes) in Unknown on line 0

Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 341351 bytes) in Unknown on line 0

php -d memory_limit=5000M test.php输出 5000M ,但我仍然认为它没有使用5000M的内存(运行了一些扩展测试,这些测试用数字填充数组,并且两个测试都设置了2048M并设置了5000M,并以相同的编号和相同的消息退出:

PHP Fatal error:  Out of memory (allocated 1457258496) (tried to allocate 134217728 bytes) in C:\xampp\htdocs\test\extended_test.php on line 733

Fatal error: Out of memory (allocated 1457258496) (tried to allocate 134217728 bytes) in C:\xampp\htdocs\test\extended_test.php on line 733


当试图为应该在我的计算机上运行的脚本分配更多内存时,我偶然发现了这一点。任何想法可能是什么原因造成的?

1 个答案:

答案 0 :(得分:0)

将ThreadsPerChild从150减小到一个较低的值对我来说解决了它。 但是我无法解释MPM模块中所有设置之间的联系和背景,最后“谁”阻止分配更多的内存。

<IfModule mpm_winnt_module>
    ThreadStackSize 8388608
    ThreadsPerChild 150  # ← try to decrease this value slightly on "Out of Memory" errors under windows.
    MaxConnectionsPerChild   0
</IfModule>