- Detalles
- Por Juan Padial
- En Programación
- Visto: 1993
El consumo de memoria de un script PHP depende de muchos factores. Por ejemplo, en función del software que utilice el servidor web la cantidad de memoria RAM que consuma un determinado script PHP puede variar considerablemente.
Pero optimizar el servidor, configurar correctamente el software utilizado y demás no te exime de que el script PHP tenga que estar optimizado en sí mismo. Se puede llegar exactamente al mismo resultado con códigos muy diferentes, y el consumo de memoria y recursos de varios scripts PHP que hagan lo mismo puede ser muy diferente.
Para conocer cuánta memoria utilizan tus scripts PHP puedes utilizar la función memory_get_usage(), que te da la cantidad de memoria, en bytes, utilizada por el script, pero me parece mucho más interesante el dato de la función memory_get_peak_usage(). Durante la ejecución de un script PHP la cantidad de memoria utilizada por dicho script puede variar. La función memory_get_peak_usage devuelve el máximo de memoria que ha utilizado un script PHP durante su ejecución. Este dato es más interesante pues a menudo los problemas de memoria (te suena Fatal error: Out of memory??) pueden deberse más a los picos de uso de memoria que colapsan rápidamente la capacidad del servidor.
Cómo utilizar memory_get_peak_usage() para ver el consumo de memoria de un script PHP
Cómo he mencionado, la función memory_get_peak_usage() devuelve la cantidad de bytes que ha utilizado un script PHP, ¿que script?, el script en el que está la función. Pero no es lo mismo poner la función al principio del script que al final. Lógicamente, queremos saber el pico de memoria utilizado en cualquier momento durante la ejecución del script, para ello hay que poner la función al final del script objeto de estudio. Pon esta línea al final de tu script PHP:
echo memory_get_peak_usage();
Supongamos que tenemos un script PHP que puede hacer varias cosas en función de determinadas variables (que raro, ¿verdad?). Nos será más útil saber la cantidad de memoria utilizada por el script según lo que haya tenido que hacer. Una solución es ir guardando en un log la memoria utilizada junto con la solicitud que ha lanzado su ejecución, es decir, la URL que lo ha ejecutado. Así, podemos crear un archivo, llamado por ejemplo "memoria_log.txt" e ir guardando en él la información del siguiente modo:
$memoria_log = fopen('memoria_log.txt', 'a');
fwrite($memoria_log, $_SERVER['REQUEST_URI'].', '.$_SERVER['REQUEST_METHOD'].', '.memory_get_peak_usage()."\n");
fclose($memoria_log);
Ahora puedes tendrás un registro de las solicitudes que han lanzado la ejecución de un determinado script PHP y el máximo de memoria que ha utilizado para esa solicitud. Espero te sea útil.
Aprende más:
Creado el 06 03 2012 Actualizado el 07 03 2012
