首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/Apache的内存上限

PHP/Apache的内存上限
EN

Stack Overflow用户
提问于 2010-12-09 22:14:03
回答 9查看 72.3K关注 0票数 22

当我运行我的PHP脚本时,我得到了错误....

代码语言:javascript
复制
Fatal error: Out of memory (allocated 1827405824) (tried to allocate 88800 bytes)

我已经在PHP脚本中添加了这一行。

代码语言:javascript
复制
ini_set("memory_limit","3000M");

这条语句似乎确实正确地控制了内存的使用,但我似乎不能让它超过1.8 get。这就好像内存上限被限制在其他地方一样。我还添加了php.ini...

代码语言:javascript
复制
memory_limit = 3000M

有没有人知道内存是否被限制在其他地方?

我正在使用Xampp运行本地服务器。我使用的是Windows 7,64位,内存为4 4GB。我的脚本使用PHP图像库,在尝试使用ImageCreateTrueColor()分配图像引用时出现错误。

(我知道这是一个巨大的内存量--但这只是一个脚本,用这种方法做起来要容易得多。)

谢谢。

更新....

@elusive @Orbling我希望每个人都对这个问题感到厌烦,但这里是说明这个问题的简化代码。

代码语言:javascript
复制
<?php
    ini_set("memory_limit","4000000000");
    echo "ini_get = " . ini_get('memory_limit') . "<br>\n";
    echo "memory_get_usage = " . memory_get_usage(true) . "<br>\n";
    $bigImageHandle = imagecreatetruecolor(22200, 24800);  //this is line 5
?>

浏览器输出...

代码语言:javascript
复制
ini_get = 4000000000
memory_get_usage = 524288

Fatal error: Out of memory (allocated 1843396608) (tried to allocate 88800 bytes) in
E:\User\My_Webs\experiments\houseshunting\temp\osMaps\t1.php on line 5

我用一组较小的瓦片和imagecreatetruecolor()使用的内存进行了测试,我估计我需要2.7 by

EN

回答 9

Stack Overflow用户

发布于 2014-07-24 19:56:05

使用Acquia Dev Desktop时,我遇到了很多内存限制崩溃的问题。

在将内存限制增加到PHP.ini之后。

代码语言:javascript
复制
php_value memory_limit                  1024M
php_value max_execution_time            3000

此问题不太常见,但仍在发生(特别是在重新创建功能时)

在我的httpd.conf中,我将StackThread增加到16M

代码语言:javascript
复制
ThreadStackSize 16*1024*1024

它解决了内存崩溃的问题。希望能有所帮助

票数 10
EN

Stack Overflow用户

发布于 2013-04-20 18:17:34

您运行的是64位操作系统,但是Apache和PHP可能仍然是32位的。如果你使用的是mod_php,apache将是这里的限制因素。

32位进程的内存限制为2GiB,除非您使用的是/3GB开关,并且软件支持3 3GB。

仍然有大约200个MiB看起来没有使用,但它足够小,可以被各种库使用,这些库都必须加载到内存中

据我所知,库的使用不会显示在提交的内存中,但仍然计入2GiB的限制(就像32位windows上的设备内存计入4GiB的限制一样)。其中安装2 GiB显卡会使您的可用内存降至2 GiB以下)。

最有可能的解决方案?安装一个64位PHP,然后将其分派给它(可能使用system()调用)

票数 9
EN

Stack Overflow用户

发布于 2010-12-09 22:17:40

您使用的是哪个PHP版本?

memory_limit变量包含在32位整数中,因此不能超过2 go。

请参阅:http://bugs.php.net/bug.php?id=39132&edit=1

从bug报告的底部注释来看,它可能是将人类可读的形式转换为数字的例程,尝试将其放在数字中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4399138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档