microtime før og efter "echo" af stor streng

Tags:    php

Hej alle

Jeg sidder med en nøddeknækker på hvilken svaret givetvis er temmeligt simpelt, men jeg kan ikke lige komme på det!

Jeg bruger meget microtime til at finde ud af, hvor lang tid det tager at afvikle diverse.

Eks. i start af kode:
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();

Og til slut:
// Debug
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "Page loaded in $time seconds\\n";

Nu er jeg så stødt ind i et lidt sjovt "problem" - på min localhost, er page loaded altid ca. 0.04 seconds, hvilket er helt fint... However, når jeg nu har lagt det online på en ny server (Xeon maskine med masser af power) viser den 0.12 -> 0.30 seconds.

Så kommer mit (newbie) spørgsmål.

Jeg bruger altid en streng ($strPrint) til alt indhold på siden der skal skrives ud til skærmen, som jeg først skriver ud som det sidste i min kode - hvis jeg microtime'r lige før jeg "echo $strPrint;", så viser den også på serveren 0.04 seconds som afviklingstid. Men hvis jeg gør det efter jeg har skrevet den store streng ud, hopper tiden altså op på 0.12 -> 0.30 seconds, hvilket den ikke gør på min localhost. Da microtime jo gerne skulle være server-tid, forstår jeg slet ikke, at en echo skulle have så meget at sige - men hvis jeg echo'er f.eks. 40kb data, kommer den altså helt op og ringe på de 0.30 seconds... (desuden ser det ud til, at antallet af mikro sekunder ryger op, jo større streng jeg skriver ud til skærmen)

Phew det var en længere smøre! Håber der er en derude som er klogere end mig, som kan give mig en logisk forklaring på dette :)

På forhånd mange tak!



Indlæg senest redigeret d. 11.04.2007 19:47 af Bruger #11653
6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Det kan være forskellige indstillinger i config filerne.
Som udgangspunkt mener jeg, at WAMP og LAMP er configureret forskelligt. Ikke kun fordi det ene kører på windows og det andet på linux, men fordi WAMP er ment som et udviklingsmiljø og ikke et runtimemiljø.

Du kan evt. kigge på hvor meget ram der er allokeret til en session på hver server.

Der er desværre en del ting der spiller ind og et endegyldigt svar er ikke muligt at give.




Jamen, her er så et svar.



Jo større mængde data du udskriver. Jo længere tid vil det tage.



Jo større mængde data du udskriver. Jo længere tid vil det tage.


Tak for dit svar.

Også på server-siden ? Det der undrer mig er jo bare, at det *ikke* tager længere tid at skrive ud på min localhost, men kun på serveren - og hvis microtime udregnelsen viser udelukkende for server-side forbrug (som den skulle), burde det vel være ligegyldigt om man sidder lokalt, på 56k, eller på 10mbit ? Eller er der noget jeg har misforstået :)



Når du udføre en echo, så sender den teksten retur til klienten med det samme, den venter ikke til hele php filen er blevet udført.
Derved er der noget overførsel som sikkert tager længere tid, end hvis klienten og serveren køre på samme maskine.



Hej Gnu og Stefan

Jeg tænkte også først noget i retning af forskellige udviklingsmiljøer, og ville derfor muligvis betale for at få optimeret den nye server - men jeg har prøvet forskellige forbindelser nu, og kan se det skifter alt efter hastigheden, så det rigtige svar må være Stefan's.. Eller måske lidt en kombination.

I skal ihvertfald begge have tak for svaret - i kan evt. begge oprette et svar, så får i lidt hver :) (det er vist kommentarer i har lavet ? er ny i dette forum)



t