MySQL server has gone away

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL server has gone away

    Hallo,
    ich führe mein PHP Script aus, dies geht ca. 30 - 40 Sekunden, recht groß, und holt informationen von anderen Seiten, darum geht es so lange.

    Am Ende von dem Script trage ich die gesammelten Informationen in eine MySql - Datenbank ein.

    Seit neustem kommt der Fehler: MySQL server has gone away

    Das liegt wohl, daran, dass die Verbindung zu lange stand, aber standartmäßig sei der timeout auf 8 Stunden?

    Versteh es nicht, mysql.com sagt, dass es daran liegen könnte, dass es ein timeout sei, glaub ich auch, aber 30 - 40 sek sind ja keine 8 Stunden.


    Da ich ein Webspace habe, kann ich nichts an den Einstellungen ändern, hat da von euch wer einen guten Tipp, was ich falschmachen könnte?

    P.S.
    Hab auch gelesen, dass es sein könnte, dass die Daten zu groß sind, glaub ich aber nicht, sind ca. 5 Zeilen Code, mit je 30 Zeichen (maximal).
    Die Ergebnisse werden zusammengerechnet, und das Schlussergebnis wird dann in die DB gespeichert, splitten geht also auch nicht.
    Zuletzt geändert von Simon_der_1ste; 30.06.2007, 10:32.

  • #2
    Hab auch gelesen, dass es sein könnte, dass die Daten zu groß sind, glaub ich aber nicht, sind ca. 5 Zeilen Code, mit je 30 Zeichen (maximal).
    Die Ergebnisse werden zusammengerechnet, und das Schlussergebnis wird dann in die DB gespeichert, splitten geht also auch nicht.
    Du berechnest die Daten, die du in die DB speicherst, aber schon mit???

    Kommentar


    • #3
      ja, die meinte ich mit "ca. 5 Zeilen Code, mit je 30 Zeichen"

      Ich speicher das dann in 5 spalten, mit je ca. 30 Zeichen.

      Kommentar


      • #4
        ok, ich bin mir nun ganz sicher, dass es nicht an der Datengröße liegt, weil es geht manchmal, manchmal, wenn es bisschen länger geht, geht es nicht mehr.

        d.h. es liegt am Timeout oder?
        Kann ich den Timeout von MySql auch im PHP Script ändern, weil die Dateien kann ich nicht ändern.

        Kommentar


        • #5
          Versuch doch die Verbindung erst herzustellen wenn die Daten bereits vorhanden sind.
          Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

          Kommentar


          • #6
            Was bringt?
            SHOW VARIABLES LIKE "%timeout%";

            ggf. hast du da echt die *-Karte
            Nicht immer liegt der Fehler an den Einstellungen ... hab selbst auch so einen Datenbank-Server, da kann ich die Timeouts auf Tage hochstellen, es kollabiert trotzdem und die Fehlersuche läuft noch _-_

            Die Fehlermeldung enthält wohl auch Netzwerk-Fehler und sowas alles, d.h. vielleicht ist davon irgendwas das Problem (zu dem Fehler existiert eine komplett eigene Seite im mysql-Manual (http://dev.mysql.com/doc/refman/5.1/de/gone-away.html))

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              kurz davor verbinden geht irgendwie nicht, ich bin mir nicht sicher, aber das kommt mir so vor, als ob er das script nicht Punkt für Punkt durchlauft, sondern zuerst die index.php und dann die includes.

              Die Timeout-Daten:
              connect_timeout 5
              delayed_insert_timeout 300
              innodb_lock_wait_timeout 50
              interactive_timeout 28800
              net_read_timeout 30
              net_write_timeout 60
              slave_net_timeout 3600
              sync_replication_timeout 0
              wait_timeout 30

              Welches Timeout ist für mich hier denn wichtig?
              Hoffe es ist was mit 30, weil dann läge es 100% daran, und das kann man vielleicht dann beheben.

              Edit:
              Hab gerade zwei Abfragen gemacht, die eine ging genau 31 sek, da kam der Fehler.
              Die Zweite Abfrage ging nur ca. 28 sek, da war alles OK.
              Zuletzt geändert von Simon_der_1ste; 01.07.2007, 13:21.

              Kommentar


              • #8
                kurz davor verbinden geht irgendwie nicht, ich bin mir nicht sicher, aber das kommt mir so vor, als ob er das script nicht Punkt für Punkt durchlauft, sondern zuerst die index.php und dann die includes.
                Das ganze lässt sich wiederlegen in dem du Testweise eine Variable in einer includeten datei definierst und danach in der index.php ausgibst.

                Wie gesagt, Verbindung erst aufbauen, wenn sie gebraucht wird. Wo ist das Problem?

                Kommentar


                • #9
                  Hat der Provider zufällig ein "Europe" im Namen?

                  Kommentar


                  • #10
                    Was bringt?
                    Ich ging davon aus das die Verbindung schon am Anfang hergestellt wird und der Server dann innerhalb der Verarbeitung abhaut.

                    Hast du mal versucht die Daten statisch reinzugeben und geguckt ab welcher Zeit der Fehler auftritt?
                    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                    Kommentar


                    • #11
                      ich bin bei all-inkl. bin auch sehr zufrieden, dass mein script so lange braucht können die nichts für.

                      Nach 30 sek ist die verbindung weg.

                      Ich brauch die verbindung am anfang und am Ende jeweils einmal.

                      Sollte ich sie dazwischen vielleicht versuchen zu trennen, und dann zur vor dem zweiten mal neu verbinden?

                      Kommentar


                      • #12
                        Sollte ich sie dazwischen vielleicht versuchen zu trennen, und dann zur vor dem zweiten mal neu verbinden?
                        Wäre ein versuch.

                        Kommentar


                        • #13
                          Original geschrieben von Simon_der_1ste
                          Welches Timeout ist für mich hier denn wichtig?
                          wait_timeout 30

                          Hätte dir ein Blick ins Manual auch verraten

                          [edit]
                          set session wait_timeout=78800;
                          am Anfang sollte reichen~

                          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                          Wie man Fragen richtig stellt

                          Kommentar


                          • #14
                            Perfekt, jetzt klappt es, auch wenn die Abfrage länger geht.
                            Vielen Dank.


                            Soll ich den Wert aber so hoch lassen?
                            Eine Abfrage nicht länger als 120 Sekunden.

                            Kommentar


                            • #15
                              Wenn du sicher bist, dass das Skript niemals in einer Endlosschleife endet ist es egal - runter setzen kannst du es natürlich trotzdem

                              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                              Wie man Fragen richtig stellt

                              Kommentar

                              Lädt...
                              X