Questa è una buona misura dell'uso di script PHP del sistema?

1

Ho cercato di vedere un modo per ottenere una misura di quanto costa uno script PHP di memoria al server. Bene, ho trovato alcune soluzioni là fuori che richiede un po 'di software per fare test e anche richiedere l'installazione di qualcosa sul server. Quelle soluzioni non sono quello che sto cercando, perché voglio solo una semplice misura del consumo.

La mia prova era di fare quanto segue:

<?php
     $initialMem = memory_get_usage();
     /* Script comes here */
     $finalMem = memory_get_usage();
     echo ($finalMem - $initialMem)/1024 . " Kbytes";
?>

Dove diviso per 1024 per convertire da byte a kilobyte. L'idea era che la funzione memory_get_usage () ottenga la quantità di memoria allocata per l'esecuzione dello script e quindi ho pensato che prendere la differenza sarebbe stata una buona misura dell'utilizzo.

È corretto? La differenza tra questi valori è una buona misura dell'uso della memoria da parte dello script? In caso contrario, come posso ottenere una buona misura di questo utilizzo senza dover installare nulla sul server?

    
posta user1620696 31.07.2013 - 23:35
fonte

2 risposte

1

Non importa quanta memoria PHP usi. Finché c'è abbastanza spazio.

PHP viene eseguito in una sandbox all'interno di un server web. Alla sandbox viene assegnato un blocco di memoria per l'utilizzo da parte di PHP e quando si raggiunge tale limite, PHP genera un'eccezione di memoria insufficiente. Devi aumentare il limite in php.ini o cambiare il tuo codice.

Gli script PHP non rimangono in esecuzione dopo che una richiesta è stata fatta. Lo script è terminato e il buffer di output viene inviato al browser. Il tuo codice sorgente di esempio ti dirà solo quanta memoria è stata utilizzata per quella richiesta HTTP. La quantità di memoria utilizzata da PHP cambierà in base al numero di richieste simultanee effettuate al server e a quale server è configurato per gestire.

Penso che il blocco predefinito di memoria per PHP sia 64MB , ma eseguo il mio a 2BG perché ho job cron di riga di comando che hanno molta memoria.

Quanta memoria utilizzata da PHP è peak = 64MB * concurrent requests .

    
risposta data 01.08.2013 - 00:05
fonte
3

Se il tuo script contiene%% di% degli% o oggetti che altrimenti eseguono la pulitura durante l'esecuzione, lo script potrebbe eseguire più memoria durante l'esecuzione che vedrai segnalato. Penso che desideri che la tua misura finale sia utilizzo massimo :

 $initialMem = memory_get_usage();
 /* Script comes here */
 $finalMem = memory_get_peak_usage();
 echo ($finalMem - $initialMem)/1024 . " Kbytes";

Inoltre, unset() in questo scenario è rilevante solo per l'ottimizzazione del codice. Se stai cercando di valutare l'impatto dello script sulle prestazioni generali del sistema (sembra che tu faccia), devi tenere conto del sovraccarico di PHP. In tal caso, non è necessario calcolare un delta; basta segnalare l'utilizzo massimo alla fine dello script.

    
risposta data 31.07.2013 - 23:58
fonte

Leggi altre domande sui tag