kostenloser Webspace werbefrei: lima-city


Gigantische Verzögerung

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    misc

    misc hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. sonok

    Moderator Kostenloser Webspace von sonok

    sonok hat kostenlosen Webspace.

    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 :wow:
  4. Autor dieses Themas

    misc

    misc hat kostenlosen Webspace.

    Dann liegt der Fehler an meinem Code? :redface:
    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
  5. g****e

    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 :-P (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
  6. 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.
  7. Autor dieses Themas

    misc

    misc hat kostenlosen Webspace.

    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
  8. Ü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)
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!