WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Mäta trafik i PHP (https://www.wn.se/forum/showthread.php?t=38298)

BjörnJ 2009-08-05 05:50

Finns det något smidigt sätt att i slutet av ett PHP-skript kolla hur mycket data som skickades från skriptet (gärna inkl HTTP-headers)? D.v.s. mäta utgående trafik.

Jag tänker mig något i stil med memory_get_peak_usage(), men för trafik.

Gärna motsvarande för ingående trafik också (d.v.s. HTTP-requesten från klienten och eventuell externt inhämtad information).

emilv 2009-08-05 09:52

Kika på output buffering.

KarlRoos 2009-08-05 11:44

Citat:

Originally posted by emilv@Aug 5 2009, 09:52
Kika på output buffering.
Kod:

// Starta buffer
ob_start();

/*
 * Din sida
 */

// Bufferns innehåll
$output = ob_get_contents();

// Stoppa buffer
ob_end_clean();

// Storlek i bytes
$size = strlen($output);

// Visa
echo $output;

Typ.

strlen() kontroller längden av en sträng, det motsvarar alltså antal bytes (oftast, kan dock bli lite fel ibland beroende på encoding).

tartareandesire 2009-08-05 12:44

Du kan använda mb_strlen istället.

emilv 2009-08-05 13:01

Ännu snyggare änr KarlRoos exempel är att göra en callbackfunktion och skicka med parametern chunk_size till ob_start(). På så sätt kan du minska minnesanvändningen och börja skicka data till webbläsaren fortare. Detta är extra relevant ifall du skickar stora filer genom PHP.

Citat:

Originally posted by tartareandesire@Aug 5 2009, 12:44
Du kan använda mb_strlen istället.

Nej, den räknar nämligen antalet tecken och inte antalet byte. Möjligen då om du anger att strängen är i ASCII-format, så att du helt säkert vet att 1 tecken == 1 byte.


Alla tider är GMT +2. Klockan är nu 20:51.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson