Anzeige - [Interessiert an einer Anzeige?]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
> Ladezeit PHP-File messen
recotha
Geschrieben am: Fr 23.04.2004, 15:18
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 87
Mitglied seit: 6.04.2004


hallo!
ich habe zwecks sprachlicher unterscheidung in einem php-file zwei versionen des contents, und zeige mittels IF und ELSE folglich nur eine version an.
wie wirkt sich das auf die ladezeit des files aus?
alternativ könnte ich ja die beiden versionen separat abspeichern, und bei der abfrage entweder das eine oder das andere file inlcuden. macht dies in bezug auf ladezeit des files einen wesentlichen, für den user feststellbaren unterschied in der geschwindigkeit des seitenaufbaus aus?
gruss
reoctha
Top
PMEmail Poster
Top
 
 
Florian
suchpad media
#2 Geschrieben am: Fr 23.04.2004, 15:58 (+00:39)
Report PostQuote Post

AyomRank 6
Group Icon

Gruppe: Moderatoren
Beiträge: 892
Mitglied seit: 6.12.2003


Das kannst du testen indem du die Ladzeit mit PHP misst!

MFG
Florian


--------------------
Top
PMEmail PosterUsers Website
Top
 
hatschi1810
#3 Geschrieben am: Sa 24.04.2004, 08:23 (+16:24)
Report PostQuote Post

AyomRank 6
Group Icon

Gruppe: Experten Entwicklung (Mod)
Beiträge: 618
Mitglied seit: 20.01.2004


Florians Antwort, dass du messen solltest finde ich richtig.

Interessanterweise kann das Aufteilen auf 2 files sowohl langsamer als auch schneller sein.
Top
PMEmail Poster
Top
 
Hamlet
  #4 Geschrieben am: Sa 24.04.2004, 13:21 (+04:58)
Report PostQuote Post

AyomRank 5
Group Icon

Gruppe: Experten Entwicklung (Mod)
Beiträge: 334
Mitglied seit: 1.03.2004


Das kann jetzt nicht Euer Ernst sein hier oder? Oder wollt Ihr Entchen zählen?

Zum ersten mal, die Ladezeit per PHP messen zu wollen kannst Du gleich vergessen. Das liegt daran, dass das Script erst abgearbeitet wird, wenn es vollständig in den Arbeitsspeicher geladen ist. Das heisst, Du kannst dann keine Ladezeit mehr messen. Es liegt nun mal in der Natur der Dinge, dass so ein Script sehr zerstückelt auf der Festplatte liegt, man nennt das fragmentiert. Die API des Servers muss nun die Adressen jedes einzelnen Segmentes des Scripts aus der File Allocation Table der Harddisk erfragen. Das führt dazu, dass z.B. die Zeilen 17 - 23 des Scripts bereits im Arbeitsspeicher bereit liegen während die Zeilen 7 - 11 noch nicht mal gefunden wurden.

So, wenn nun das ganze Script im RAM bereit liegt, kannst Du eine ungefähre Messung vornehmen, wie lange gebraucht wird, um das Script abzuarbeiten. Warum nur ungefähr? Ganz einfach: Zu dem Zeitpunkt, wenn Du die Serverzeit erfragst, hat die Abarbeitung des Scripts längst begonnen. Das wäre, als würdest Du beim Formel1-Rennen erst in der 5. Kurve die Stoppuhr starten. Am Ende des Scriptes nimmst Du nochmal die Serverzeit. Danach subtrahierst Du die Startzeit von der Endzeit und gibst die Differenz per print oder echo aus. Das heisst, das Script wird weiter abgearbeitet, obwohl Du die Uhr bereits gestoppt hast. Beim Formel1 wäre das so wie, die Uhr 3 Kurven vor der Zielgeraden anzuhalten. Bedenke, wir sprechen hier von Bruchteilen von Millisekunden.

In einer If-then-else-Schleife wird das jeweils nicht benötigte übersprungen, also nicht ausgeführt. Trotzdem muss der zu überspringende Teil komplett im Arbeitsspeicher vorhanden sein.

Wie kommt denn nun genau ein Script in den Arbeitsspeicher? Ein Rechner verhält sich hier wie die Post: Nimm eine Nummer, wenn Deine Nummer aufgrufen wirst, bist Du dran. Also wartest Du jetzt erstmal. Wenn Du endlich dran kommst, wirst Du ständig unterbrochen, weil der Rechner ja gleichzeitig mehrere tausend mal pro Sekunde alle 108 Tasten Deiner Tastatur nach Veränderungen abfragen muss und mehrere tausend mal pro Sekunde die Maus abfragen und mögliche Veränderungen verarbeiten und viele weitere Aufgaben erledigen muss. Die Festplatte selbst ist dann das Langsamste, was Du Dir vorstellen kannst. Zum ersten müssen zig tausend Zeilen Maschinencode abgearbeitet werden, bis die Festplatte nur mal zugibt, dass sie existiert. Dann hat eine Festplatte wesentlich höhere Zugriffszeiten als das RAM. Dann müssen die Daten von der Festplatte durch den ständig verstopften Flaschenhals des Bussystems geschleust werden. Da geht Zeit verloren, das glaubst Du nicht.

Trotz alledem ist der Server immer noch sauschnell. Jetzt kommt nämlich das, was wirklich Zeit braucht: Der fertige HTML-Code, frisch vom Server anhand des Scriptes erstellt, muss zum Browser des Users. Aufgeteilt in kleine Pakete wird der HTML-Code auf die Reise geschickt. So kann es sein, das Teile des Bodys sich bereits beim User rumlangweilen, während ein Teil des Headers noch in Rom in einer Warteschleife steht.

Willst Du also wirklich präzise eruieren, was schneller geht, dann musst Du Dir einen Server aufsetzen, der nichts anderes zu tun hat, als Dein Script auszuführen. Der Server Deines Hosters hat ja nun leider auch noch andere Kunden zu bedienen als nur Dich. Anyway, so ein klinisch reiner Server ist sowiso nur theoretisch möglich.

Wenn Du das alles jetzt nicht glauben willst, dann probier es aus: Dieses Forum zeigt in der Fusszeile wie lange das Script benötigt hat um den HTML-Code bereitzustellen. Du kannst mehrere Male reloaden und wirst jedes Mal eine andere Zeit erhalten, im Millisekunden-Bereich wohlgemerkt. Dahingegen der Aufbau der Seite in Deinem Browser dauert unsäglich viel länger, also so eine bis zwei ewig lange Sekunden kann das schon gehen.

Was machen wir jetzt? Ich sags Dir: Guten und inhaltlich interessanten Content schreiben und ein Augenmerk darauf legen, dass er in beiden Sprachversionen sowohl orthographisch als auch grammatikalisch sauber ist. Das bringt mehr Sinn, als darüber zu hirnen, wo man noch ein Millisekündchen sparen könnte.

smile.gif


--------------------
Umwege erhöhen die Ortskenntnis!
----------------------------------------
Forum Baslertaube - Hier treffen sich Briefmarken-Sammler
Top
PMEmail PosterUsers Website
Top
 
hatschi1810
#5 Geschrieben am: Sa 24.04.2004, 17:00 (+03:39)
Report PostQuote Post

AyomRank 6
Group Icon

Gruppe: Experten Entwicklung (Mod)
Beiträge: 618
Mitglied seit: 20.01.2004


Also ich zähle ja eigentlich ganz gerne Entchen 

Aber im Ernst, ganz trivial muss die Entscheidung nicht sein.

Du hast sicher recht, das man nicht mit php selbst auf einem Server, der gleichzeitig x Seiten bedient, eine gute Testumgebung darstellt.

Abzuschätzen, ob z.B. ein include länger braucht als ungenutzte Funktionen im ausgeführten File immer zu haben ist gar nicht so leicht.

Meiner Erfahrung nach ist das aber im Vergleich zu den anderen Stellen die man optimieren kann eigentlich wirklich egal.

Einen ganz guten Artikel gibt es unter, geht aber mehr um Servertuning:
http://phplens.com/lens/php-book/optimizin...bugging-php.php

Immer wieder interessant:
http://www.zend.com/zend/tut/index.php

Top
PMEmail Poster
Top
 
sd12
#6 Geschrieben am: So 25.04.2004, 21:54 (+28:53)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Moderatoren
Beiträge: 3574
Mitglied seit: 3.03.2004


Hallo...

wie du den php source schreibst ist ja nun wirklich egal ausser du hast milionen von zugriffen und du machst nicht unnötige schleifen.

was da wichtiger ist, dass du die mysql abfragen optimierst.


--------------------
************************
Treiber f[r das Kezboard ist [berfl[ssig.
Top
PMEmail PosterICQMSN
Top
 
recotha
#7 Geschrieben am: Mo 26.04.2004, 09:40 (+11:46)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 87
Mitglied seit: 6.04.2004


@hamlet
sehr ausführliche schilderung, danke!

@beni
was verstehst du unter mysql-abfragen optimieren?
hättest du einen vergleich von einer schlechten abfrage und einer optimieretn?
Top
PMEmail Poster
Top
 
Josh
#8 Geschrieben am: Mo 26.04.2004, 10:42 (+01:01)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Moderatoren
Beiträge: 2139
Mitglied seit: 19.10.2003


mysql abfragen optimieren:

wenn du verknüpfte abfragen zwischen tabellen machst, kannst du das z.b. auf php-ebene oder auf mysql eben machen. php ebene:

// erste abfrage
$mysqlTodo1 = "
select dept_id from dept
";

$mysqlResult1 = mysql_query($mysqlTodo1);

while($mysqlVar1 = mysql_fetch_assoc($mysqlResult1))
{

echo "das department ".$mysqlVar1["dept_id"]." hat folgende mitarbeiter:<br>";

// zweite abfrage
$mysqlTodo2 = "
$select * from emp where dept_id = '".$mysqlVar1["dept_id"]."'
";

$mysqlResult2 = mysql_query($mysqlTodo2);

while($mysqlVar2 = mysql_fetch_assoc($mysqlResult2))
{
echo $mysqlVar2["emp_id"]."<br>";
}

}

oder du kannst das mit einem join lösen:

select * from dept
join emp on emp.dept_id = dept.dept_id

***

das nur so als "in etwa", wie man eine abfrage optimieren kann, schliesslich ist es doch unsinnig, abfragen in php zu steuern, wenn mysql (bzw sql allgemein) optimierte befehle dafür kennt. in php scheint es erst zwar viel einfacher (was es evtl auch ist), aber in performance fragen siehts dann anders aus.

ein weiteres beispiel ist auch, dass man beim select statement kein wildcard benutzt, wenn man nur eine oder zwei spalten abfragen will:

select * from dept

ist viel langsamer als

select dept_id from dept

was natürlich nur bei grosser anfrage wirklich eine rolle spielt.

ich hoffe, das hilft dir etwas und ich habe den ganzen sh*t nicht umsonst geschrieben. wink.gif

gr33tz
j0sh


--------------------
Mein letztes Projekt: Atelier-Schmuck.ch

"Das habe ich nie getan und werden es auch nie wieder tun!" :lol:
Top
PMEmail PosterUsers WebsiteICQ
Top
 
recotha
#9 Geschrieben am: Mo 26.04.2004, 13:13 (+02:30)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 87
Mitglied seit: 6.04.2004


vielen dank josh, das mit dem JOIN ist sehr hilfreich für mich. habe mich schon ein wenig mit datenmodellierung befasst da ich abhängigkeiten zwischen diversen db-tables habe, und bin noch auf keine "einzeiler-lösung" gekommen!
danke!
Top
PMEmail Poster
Top
 
Josh
#10 Geschrieben am: Mo 26.04.2004, 14:00 (+00:47)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Moderatoren
Beiträge: 2139
Mitglied seit: 19.10.2003


kein problem, ich selber habe lange zeit mehr ahnung von von joints als von joins gehabt biggrin.gif, doch als wir sie in der schule gelernt hatten war ich sehr froh um dieses neue wissen. ich rate dir, die verschiedenen joins genau zu lernen (hast du einen begriffen, sind die anderen 2-3 kein problem mehr). stichworte: inner (default) / outer join, => verbunden mit left / right / natural join. sieht komplex aus, ist aber relativ simpel. smile.gif


--------------------
Mein letztes Projekt: Atelier-Schmuck.ch

"Das habe ich nie getan und werden es auch nie wieder tun!" :lol:
Top
PMEmail PosterUsers WebsiteICQ
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/1228

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
Word file download und im (IE)-Word öffnen spaceman007 91 2 Do 7.08.2008, 16:55
File-Backup einer infizierten Windows Box Sandro Feuillet 79 3 Mo 4.08.2008, 14:41
Jetzt neue Anzeige der Ladezeit beim Qualitätsfakt SEMeister 233 0 Fr 9.05.2008, 11:54
Google: Ladezeit als Qualitätsfaktor für Adwo Johannes T 1101 7 Di 18.03.2008, 13:46
/file.htm/test.php Peter Schneider 618 12 Sa 8.12.2007, 23:29
[V] File Hoster mit ca. 1500 Besuchern / Tag shork 226 0 So 4.11.2007, 14:59
Messen / Ausstellungen unglaubwürdig?! woody 228 7 Di 17.07.2007, 10:48
File Hoster/One Klick Hoster Script mit Uploadtool shork 2291 0 Do 24.05.2007, 10:09
Daten statt in DB in File schreiben radarin 604 15 Mo 9.04.2007, 02:16
CGI Fehler ? Ladezeit unendlich lange jetoo 289 2 Do 1.02.2007, 11:55




Anzeige - [Interessiert an einer Anzeige?]



Anzeigen


[Interessiert an einer Anzeige?]