Mät minnesåtgång på ditt PHP-script

Det finns ett par kommandon som du kan använda för att se hur mycket minne som är allokerat för hela PHP (inklusive alla andra besökare på sidan) just nu, samt största mängd minne som PHP använt tidigare.

Om vi sitter och utvecklar ett script är vi ensamma på web-servern. Eventuella cron-jobb räknas också som användare.

Nu ska du få se ett exempel hur minnesanvändningen kan variera över tid:

php-mem-exempel1

Vad bra, då kan vi använda memory_get_peak_usage för att räkna ut minnesåtgången för vårat script.

Ja det går att göra om du är ensam på webservern och mäter minnesanvändningen i början och i slutet på ditt script.

Vill du ha lite mer förfinat och räkna ut minnesåtgången för en funktion, då kan du få problem. se här:

php-mem-exempel2

I det här exemplet har vi redan kört lite kod när vi nu kommer till den funktion vi vill mäta.

Som du ser är peak lite högre än nuvarande minnesanvändning när vi på vänster sida börjar exekvera funktionen.

I slutet av exekveringen har funktionen toppat minnesanvändningen och gått tillbaka.

Vad bra, då kan vi använda värdet för get_memory_usage i början och get_memory_peak_usage i slutet för att räkna ut funktionens maximala minnesanvändning.

Ja det skiter sig i alla fall som du ska se i nästa exempel.

php-mem-exempel3

När vi kör den funktion som ska mätas är peak-värdet redan så högt att vi inte påverkar det.

I slutet av exekveringen vet vi egentligen ingenting om funktionens historiska minnesanvändning.

Slutsats

Hade man kunnat nollställa memory_get_peak_usage, då hade funktionerna varit lite användbara för att mäta enskilda funktioners minnesanvändning när man är ensam på servern.

Som det är idag kan du i stort sett enbart mäta max minnesåtgång för ett helt script om du är ensam på servern.