Gigantische Verzögerung
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
auslese
blitz
code
dutzend
fehlerfall
funktion
grosse history
kick
leute
liegen
list
log
profil
schauen
schleifen
sekunde
server
tabelle
zehn
zeile
-
Hi Leute
Ich habe einen PHP-MySQL Flash Chat gebaut. Bei mir zuhause auf dem Easy-PHP funktioniert er wunderbar, auf Lima-city funktioniert er zwar auch, aber unendlich langsam. Ich weiss dass lima momentan MySQL-Probleme hat, aber kann es tatsächlich sein, dass ein etwa DIN A4-Seiten langer Code (ohne viele for Schleifen und/oder Rekursion) geschlagene 10 Sekunden dauert (laut Microtime profiling, das ich serverseitig gemacht habe)? Auf meinem PC dauert es nämlich rund eine bis zehn Millisekunden. Die MySQL Tabellen sind mit höchstens ein paar dutzend Zeilen winzig.
Ich weiss dass lima gratis und werbefrei ist, und das schätze ich sehr, aber könnte lima hier nicht mal schauen woher dieser IMMENSE Rechenaufwand kommt der den ganzen Server lahmlegt? Da müssten ja fast Millionen von meinen Flashchats laufen um eine solche Verlangsamung auszulösen.
lg
misc -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hmmm, also ich habe nicht wirklich den Eindruck daß der MySQL-Server gerade ein Pause macht, auf meiner Seite geht's an sich ganz fix
-
Dann liegt der Fehler an meinem Code?
Das wär ja sehr peinlich nachdem ich hier die Sau rausgelassen habe :D
Nein, mal im Ernst, theoretisch sollte es nicht am Code liegen wenn das auf meinem Easy-PHP Server wie der Blitz geht, oder? Leider ists eben wie gesagt etwas viel code um einfach so zu posten.
Beitrag zuletzt geändert: 23.2.2011 0:46:56 von misc -
mit xdebug profilen. dann weißte was abgeht und ob es irgendwo nen fetten speicherverbrauch oder so gibt, den du lokal natürlich schneller zur verfügung hast als hier. ich habs mit ca 20zeilen schon auf ne auslastung von über 80mb gebracht (war nur leider nicht das ziel...)
überprüfe auch die images usw was du transferierst. auf deinem homepc hast du ne übertragungsrate von festplattengeschwindigkeit. im netz nur die lima geschwindigkeit bzw deine download rate -
Ohne den Code kann man da nur wenig drüber sagen.
Um zu schauen, an was es liegen könnte kannst du zwischen den einzelnen Funktionen Timestamps ausgeben,
dann siehst du an welchem Punkt es klemmt. -
Hey Leute
Ich habe den langsamen Teil meines Codes gefunden. Dieser kleine Code braucht nur auf lima-city glatte 8-15 Sekunden:
/////////////Reduce chat history if too long list($usec, $sec) = explode(' ',microtime());//PROFILING $oldmic = bcadd($usec, $sec, 7);//PROFILING $query = "SELECT table_rows FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'chat'";//Look how many chats there are $result = mysql_query($query) or abort_session($ERR_MySQL_Query_chat); while( $row = mysql_fetch_array( $result ) ) { $lines = $row[0]; } list($usec, $sec) = explode(' ',microtime());//PROFILING $newmic = bcadd($usec, $sec, 7);//PROFILING $handle = fopen("log.txt", "a");//PROFILING LOG fwrite($handle, $newmic-$oldmic."/".$lines."\n");//PROFILING LOG
Dieser Code liest aus, wie viele Zeilen in der MySQL-Tabelle "chat" sind und löscht später eine allfällige, zu grosse history. Es ist eigentlich eine Wartung der Tabellen.
Die Funktion abort_session wird nur im Fehlerfall ausgeführt und resultiert in einem kick aus dem Chat. Abort_session wurde nicht ausgeführt, da diese funktion ein die() drin hat und deshalb gar nicht ins log geschrieben würde. Deshalb ist die Funktion nicht weiter von belangen.
Unterstützt lima-city SELECT table_rows FROM INFORMATION_SCHEMA.TABLES nicht?
lg
misc
Beitrag zuletzt geändert: 23.2.2011 13:44:19 von misc -
Über das INFORMATION_SCHEMA würde ich keinen Falls arbeiten!
Kein Wunder, dass dein Programm bei dir schnell und bei Lima langsam ist.
Warum rufst du nicht direkt über die Tabelle chat ab, wie viele Datensätze drin sind?
SELECT count(*) FROM chat
bzw SELECT * FROM chat, wenn du später die Sachen auslesen möchtest,
dann brauchst du nur noch ein mysql_num_rows($result) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage