¿Cómo usar más de 256MB de memoria en el administrador?

10

Estoy construyendo un sitio para un fotógrafo que carga imágenes que normalmente son grandes para las cámaras digitales de hoy. Las imágenes requieren bastante memoria, especialmente las operaciones de imagen, como la creación de miniaturas.

Así que quería aumentar el límite de memoria en el administrador por encima de 256 MB. ¿Cómo se puede hacer esto? Permití que CGI y PHP usaran hasta 1 Gigabyte pero Wordpress siempre disminuye la memoria a 256MB. ¿Alguna idea de cómo arreglar eso en el lado del cliente que necesita poder actualizarse automáticamente?

ACTUALIZACIÓN: De Wordpress 3.2 en curso, el límite máximo de memoria en Wordpress se podrá configurar nuevamente .

    
pregunta hakre 26.10.2010 - 11:21

6 respuestas

13

Teóricamente, edita tu config.php y agrega esta línea antes wp-settings.php inclusión.

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

debería elevar el límite de memoria para WordPress a 256 MB o el valor que establezca. Y esto funcionará en todo el sitio. Sin embargo, como sorich87 señalado , hay pocas funciones que alterarán esta configuración con un límite de 256 MB codificado.

Para hackear o no para hackear

Un poco de preocupación sobre esto, WP_MEMORY_LIMIT es uno de los ajustes de WP más extraños que he encontrado. si marca /wp-includes/default-constants.php encontrará esta configuración:

// set memory limits
if ( !defined('WP_MEMORY_LIMIT') ) {
    if( is_multisite() ) {
        define('WP_MEMORY_LIMIT', '64M');
    } else {
        define('WP_MEMORY_LIMIT', '32M');
    }
}

Nunca me doy cuenta de que WP establecerá su uso de memoria predeterminado tan bajo, hasta que encuentre esto en el códice WP:

  

WordPress comprobará automáticamente si a PHP se le ha asignado menos memoria que el valor ingresado antes de utilizar esta función. Por ejemplo, si a PHP se le han asignado 64 MB, no es necesario establecer este valor en 64M, ya que WordPress usará automáticamente todos los 64 MB si es necesario. ( fuente )

Esa explicación fue un alivio. Sin embargo, nunca se menciona el uso de @ini_set('memory_limit', '256M'); codificado cada vez que la función de ejecución de WP que necesita más memoria . De hecho, no encuentro ninguna explicación sobre este comportamiento vago del códice WP. Dado que la mayoría de las funciones no relacionadas con el usuario no están documentadas o no están claramente explicadas en el códice.

Si bien esta configuración funciona bien en la mayoría de los casos, hará que esas funciones sean inútiles en el servidor con una configuración de memoria máxima más baja o en su caso, un mayor uso de memoria.

Hasta que los chicos de WP solucionen esto, creo que tu única solución es modificar el núcleo. Puede encontrar esta publicación escrita por hakre interesante para leer . También envía una recomendación del parche en Trac. El enlace anterior al archivo de parche puede ayudarlo a encontrar una lista de funciones que utilizan esta configuración.

edit:

esta es la respuesta más estúpida que he dado porque Le doy un enlace a su propia publicación (solo tenga en cuenta que el nombre de OP fue hakre después de 2 días): D

edición 2:

como se mencionó en el comentario, esto se solucionado en la versión 3.2

    
respondido por el bangbambang 26.10.2010 - 17:27
1

Hay @ini_set('memory_limit', '256M'); antes de que las imágenes se carguen en la memoria con las funciones de GD.

imagecreatefromstring() (línea 253, wp-includes / media.php) es usado por wp_load_image() que es usado por image_resize (la función donde se realiza el procesamiento de imágenes para la creación de miniaturas). El límite de memoria está en la línea 252, por lo que, por lo que puedo ver, no hay forma de modificarlo sin matar a un gatito * > :).

También hay funciones GD en load_image_to_edit() (línea 200, wp-admin / includes / image-edit.php). Éste es usado por el editor de imágenes (nunca lo usé, ya que sé que WordPress, ni siquiera sabía dónde encontrarlo :)). Si su cliente lo usa, es posible que también desee establecer el límite de memoria allí. Ahí está el filtro load_image_to_edit_path .

Espero que mi respuesta sea útil.

* hacking core

    
respondido por el sorich87 26.10.2010 - 14:41
1

Swill - Tuve los mismos problemas. Maldita sea wordpress con algunas de las "características" Un enfoque más sofisticado es cambiar todos los @ini_set 's para configurarlo desde WP_MEMORY_LIMIT - problema resuelto

Además, cambiar los valores de php en tiempo de ejecución no es tan inteligente, no estoy seguro de por qué se implementa :(

    
respondido por el neosk 10.05.2011 - 01:30
0

Según su descripción, creo que este código en admin.php es el problema:

if ( current_user_can( 'manage_options' ) )
    @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', '256M' ) );

Algo extraño que trata el uso de la memoria del administrador por separado, pero al menos es filtrable.

    
respondido por el Rarst 26.10.2010 - 11:41
0

Sólo quería decir gracias a bangbambang. Esta es la primera publicación que encontré que pudo darme una idea de por qué la entrada en wp-config.php de define('WP_MEMORY_LIMIT', '512M'); no se estaba usando realmente. Pasé horas tratando de resolver esto ...

Mi importación estaba fallando con el problema de 256M agotado, independientemente de cómo establezca el límite de memoria.

Estos son los lugares donde el límite de memoria está codificado de forma rígida a 256M (en la versión 3.0.5 de todos modos).

wp-admin/includes/file.php (line 532)

wp-admin/includes/image-edit.php (line 393 & 498)

wp-includes/media.php (line 252)
    
respondido por el user3048 09.02.2011 - 23:18
-4
/* Memory Limit */
define( 'WP_MEMORY_LIMIT', '1G' );
define( 'WP_MAX_MEMORY_LIMIT', '1G');
    
respondido por el Anton 22.03.2016 - 07:48

Lea otras preguntas en las etiquetas