Skip to main content

提升WordPress内存上限

By 2021-08-08默认

网络上有各种各样的方法来增加WP的Memory Limit。大体方法有二:wp-config.php或者php.ini。

一、在wp-config.php里提升很简单:

打开你的wp-config.php文件, 在里面加入下面这段话:

define('WP_MEMORY_LIMIT', '256M');

”This setting increases PHP Memory only for WordPress, not other applications.“
根据WordPress的官方文档,这段话是告诉WordPress将PHP的Memory Limit提高到256M。注意,这里的提升是仅仅针对WordPress的提升。其它使用PHP的程序的内存限制并不会提升(目测是通过类似ini_set()的方式达成的)。

官方文档里也提到了,有的主机并不允许以如此方式提升PHP的内存限制。换句话说,根据不同的主机配置,在wp-config里面提升Memory Limit有的时候并不会成功。这等于是让WP告诉PHP它所想要的最大的PHP Memory Limit上限。但PHP接不接受提没提WordPress就不知道了。而很有可能,你的PHP根本就不理WordPress,没有将Memory Limit提升。换句话说,白忙活了。这也是为什么有可能会出现WordPress的Memory Limit超出PHP真实的Memory Limit上限。为此,我们有第二种方法。

二、在php.ini里面提升Memory Limit

需要说的一点,根据大家的安装不同,通常会存在有许多PHP版本的问题。网络上所说的通过command line来显示php的内存限制并不靠谱。
虽然你可以通过php -i | grep "memory_limit"来查看PHP的Memory Limit,但你查到的一般都是php-cli的内存限制,并非你的WordPress正在使用的PHP的内存限制。因为一般默认在command line里跑的PHP都是PHP-cli。换句话说,php-cli通常是用来让人在后台command line里面跑php用的,所以内存限制通常是无限的。

注:无限的Memory Limit显示为:memory_limit => -1 => -1

因此,正确且严谨的做法是通过phpinfo来快速判断现有的wordpress下的PHP的Memory Limit到底是多少,和WordPress到底使用的是哪一个版本的PHP。

创建phpinfo的办法很简单:

在WordPress的根目录下创建一个php文件,例如phpinfo.php,并在里面输入如下:

<?php
    phpinfo();
?>

而后,在浏览器里打开 example.com/phpinfo.php即可查看。这里注意,一定要将phpinfo.php建立在WordPress的根目录下(或者子目录)。这样一方面你才能在浏览器里打开,一方面也确保phpinfo.php和WordPress用的是同一个PHP。

在查到对应的Memory Limit和正在使用的PHP 版本后,可以通过修改对应版本的php.ini里面的memory_limit来提升/降低上限。

如:memory_limit = 512M这里建议可以将PHP的上限调整高一点,但也不要太高。以512M为宜。

而后,我们可以重启php来使改动生效:

sudo service php7.4-fpm restart

这里需要将php的版本号换成你现在的php的版本号。

三、更细微的控制WordPress的内存使用

在在php.ini设置好内存上线后,我们可以按方法一,即通过在wp-config.php里面添加 define('WP_MEMORY_LIMIT', '256M');来进一步限定WordPress的内存上限为256MB。

至于为什么在PHP里面设置512M而后又在wp-config里面缩小到256M而不一步到位的原因是,我们可以充分利用WordPress的config文件,进一步控制内存的使用情况。

因为一般后端应用会花费比前端更多的资源,在查阅了WordPress的官方doc后我发现,WordPress专门允许我们针对后端应用设置额外的一个Memory Limit。这就是WP_MAX_MEMORY_LIMIT
”Administration tasks require much memory than usual operation. When in the administration area, the memory can be increased or decreased from the WP_MEMORY_LIMIT by defining WP_MAX_MEMORY_LIMIT.“

因此,我们可以将WP_MEMORY_LIMIT设置成 256M 而后将WP_MAX_MEMORY_LIMIT设置成 512M,以确保WordPress在平时不会占用过多的资源且平时服务器的内存足够可用。而在有需要的时候,比如跑WordPress后台插件,WordPress可以自动提升内存上限,以确保任务可以顺利完成。
具体的设置如下:

define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');

 

参考

Editing wp-config.php

Leave a Reply