Modificar directivas PHP local a los scripts.

phpEl título no lo debe de ser todo. De hecho, no creo que sea “tan” correcto expresarlo de esa manera. Sin embargo, he aquí mi justificación.

Algunas veces resultará tener alguna directiva con un valor distinto al configurado de manera global y que, por azares del destino, no podremos modificar nuestro archivo php.ini. Ah! Pues eso mismo me ocurrió a mí …

Resulta que, sólamente para un script dentro de una aplicación, era necesario generar un reporte para el cuál 128M que tenía configurados memory_limit no eran suficientes. Modificar el valor de manera global podría tener varios impactos:

  • Sería necesario reiniciar el servidor Apache, lo cuál no era viable sin la gestión y logística que un ambiente productivo conlleva.
  • Se verían afectadas diferentes instancias que viven en un mismo servidor Apache.
  • Al no ser una aplicación desarrollada por mí, corríamos el riesgo de afectar el performance del servidor, si esta directiva se veía incrementada en demasía sin las pruebas suficientes.
  • Etc.

Como ya es de saber, la directiva memory_limit de PHP permite establecer la cantidad máxima de memoria que un script puede utilizar para su ejecución, la cuál en mi caso, se encontraba limitada a 128 Megabytes. La cuál, claramente no estaba siendo suficiente para tal script, que con un mensaje de error parecido a:

PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted (tried to allocate

Desbordamiento de memoria, sin duda alguna. Bytes más, bytes menos.

La solución? Incrementar la memoria disponible para el script. Cómo?

La función init_set nos permite modificar el valor de las directivas, a través de la sintaxis:

string ini_set (string $varname, string $newvalue)

Para nuestro caso, bastará con agregar en nuestro archivo .php:

ini_set("memory_limit", "256M");

Esto incrementará a 256 Megabytes nuestra memoria disponible. Únicamente para éste script. Una vez que termine, se retoma el valor declarado de manera global, 128M. Y así de sencillo. Funciona de maravilla.

No todas las directivas de PHP pueden ser seteadas de ésta manera, algunas requerirán tener un valor global leído desde el archivo de configuración php.ini. Para ver el modo en que el valor de las variables puede ser declarado, puede hacerlo aquí.

Facebook Twitter Email

Entradas relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *