如何在管理员中使用超过256MB的内存?

时间:2010-10-26 作者:hakre

我正在为一位摄影师建立一个网站,他上传的照片通常是今天数码相机的大照片。图像占用大量内存,尤其是创建缩略图等图像操作。

因此,我想将管理中的内存限制提高到256MB以上-如何做到这一点?我允许CGI和PHP最多使用1GB,但wordpress总是将内存减少到256MB。你知道如何在需要自动更新的客户端上解决这个问题吗?

UPDATE: From Wordpress 3.2 ongoing the maximum memory limit in Wordpress will be configure-able again.

5 个回复
最合适的回答,由SO网友:bangbambang 整理而成

理论上,编辑配置。php并添加此行before wp设置。php包含。

define(\'WP_MEMORY_LIMIT\', \'256M\');
should 将WordPress的内存限制提高到256MB或您设置的任何值。这将在整个站点范围内起作用。然而,作为sorich87 pointed out, 很少有函数会使用硬编码256 MB限制更改此设置。

To Hack or Not To Hack

对此有点担心,WP_MEMORY_LIMIT 是我遇到的最奇怪的WP设置之一。如果你检查/wp-includes/default-constants.php 您将发现以下设置:

// set memory limits
if ( !defined(\'WP_MEMORY_LIMIT\') ) {
    if( is_multisite() ) {
        define(\'WP_MEMORY_LIMIT\', \'64M\');
    } else {
        define(\'WP_MEMORY_LIMIT\', \'32M\');
    }
}
我从未意识到WP会将其默认内存使用率设置得如此之低,直到我在WP codex中找到以下内容:

WordPress将在使用此函数之前自动检查PHP分配的内存是否小于输入值。例如,如果PHP已分配64MB,则无需将此值设置为64M,因为WordPress将在需要时自动使用所有64MB。(source)

这一解释令人宽慰。然而,硬编码的使用@ini_set(\'memory_limit\', \'256M\'); 每次WP execute函数需要更多内存时never mentioned. 事实上,我从WP codex中找不到关于这种模糊行为的解释。因为大多数与用户无关的功能要么没有文档记录,要么在codex中没有明确解释。

虽然此设置在大多数情况下都能很好地工作,但在最大内存设置较低的服务器上或在内存使用率较高的情况下,这些功能将变得无用。

在WP人员解决这个问题之前,我认为您唯一的解决方案是修改核心。你可能会发现this post 哈克尔写的,读起来很有趣。他还提交了patch recommendation 在Trac中。补丁文件的上一个链接可能会帮助您查找使用此设置的函数列表。

edit:

这是我给过的最愚蠢的回答,因为I give a link to your own post (只需知道OP名称是hakre 2天后):D

edit 2:

正如评论中提到的,这是fixed by 3.2 release

SO网友:sorich87

@ini_set(\'memory_limit\', \'256M\'); 在通过GD函数将图像加载到内存之前。

imagecreatefromstring() (第253行,wp includes/media.php)用于wp_load_image() 所使用的image_resize (图像处理功能用于创建缩略图)。内存限制在第252行,因此,据我所知,如果不杀死一只小猫,就无法修改它*>:)。

中也有GD函数load_image_to_edit() (第200行,wp admin/includes/image edit.php)。这个是图像编辑器使用的(我从未使用过它,因为我知道WordPress,甚至不知道我们能找到它:))。如果您的客户端使用它,您可能还需要在那里设置内存限制。过滤器在那里load_image_to_edit_path.

希望我的回答有帮助。

*黑客核心

SO网友:neosk

泔水-我也有同样的问题。该死的wordpress有一些“功能”,一个更复杂的方法是更改所有的@ini\\u集,从WP\\u MEMORY\\u LIMIT设置它-问题解决了

此外,在运行时更改php值也不是那么聪明,不知道为什么要实现它:(

SO网友:Rarst

根据你的描述,我认为这个代码admin.php 问题是:

if ( current_user_can( \'manage_options\' ) )
    @ini_set( \'memory_limit\', apply_filters( \'admin_memory_limit\', \'256M\' ) );
有点奇怪,它单独处理管理内存使用情况,但至少它是可过滤的。

SO网友:Anton
/* Memory Limit */
define( \'WP_MEMORY_LIMIT\', \'1G\' );
define( \'WP_MAX_MEMORY_LIMIT\', \'1G\');
结束

相关推荐

WP-ADMIN似乎正在重定向

我的w-admin登录有一个奇怪的问题。这是从我升级到3.0以后才开始的,当我转到wp admin时,登录表单显示正常,但当我输入用户名并通过时,每次都会再次显示登录表单。使用密码恢复功能会导致电子邮件未找到错误。我知道用户名密码和电子邮件是正确的,b/c我可以访问mysql数据库,我可以看到值(至少用户名和电子邮件) 有人知道会出什么问题吗