Steffen Velte: mysql_connect oder mysql_pconnect

Hallo,
kennt Jemand die Unterschiede der o.g. Funktionen? Welche sollte man verwenden, bzw. wann sollte man welche verwenden?

Thnx,
Steffen

  1. Tach,
    mysql_pconnect - öffnet eine persistente Verbindung zu einer Datenbank                    ^^^^^^^^^^^
    mysql_connect - öffnet eine Verbindung zu einer Datenbank

    Ein Blick ins PHP-Handbuch wirkt Wunder ;-)

    M.f.G. Micha

  2. Hi Steffen,

    kennt Jemand die Unterschiede der o.g. Funktionen?

    Ja. http://www.koehntopp.de/php/faq-databases.html#databases-8

    Beste Gruesse

    Jan

  3. Hi,
    RTFM pointer hast du ja schon bekommen. Nur noch was dazu, welche du verwenden sollst.
    Auch wenn es logisch erscheint, pconnect zu verwenden um nicht immer eine neue Mysql Verbindung aumachen zu muesen. klappt das nur wenn er naechste request an das file vom selben apache child gehandelt wird, was i.a. sehr unwahrscheinlich ist, d.h. pconnect erzeugt ewig ville ungenutzte connections die mehr performance killen, als ein connect.

    Jan
    --

    1. RTFM pointer hast du ja schon bekommen.

      Ja, allerdings hatte ich schon vorher reingeschaut und mir ging es mehr um den 2ten Teil meiner Frage. Die Antwort darauf beruht wohl eher auf Ehrfahrungswerten, daher danke für Deine Meinung.

      Kristian Köhntopp z.b. schreibt ja es sei empfehlenswert, in jedem Fall die mysql_pconnect-Variante zu verwenden. Allerdings schreibt er auch, dass die eigentlichen Vorzüge einer persistenten Verbindung bei mySQL nicht wirklich gegeben sind. Hmmmm.

      d.h. pconnect erzeugt ewig ville ungenutzte connections die mehr
      performance killen, als ein connect.

      Ja, das scheint mir auch so. Da ein Prozess nicht den Connect eines anderen Prozesses "nutzen" kann und auch noch für jede User/Passwort-Kombination einen neuen "aufmacht" scheint mir es sinnvoller mysql_connect zu verwenden.

      Damit ist meine Frage für mich beantwortet, allerdings mein Problem nicht gelöst:
      Unsere mySQL-Datenbank schmiert regelmässig mit der Meldung "Warning: MySQL Connection Failed: Too many connections in /usr/home/www/...." ab.
      Ich verwende ausnahmslos mysql_connect(), dachte es liegt daran und ich könnte mit mysql_pconnect etwas erreichen. Naja, vielleicht sollte ich die Max-Clients runtersetzen?

      Ciao,
       Steffen

      1. »Hi,

        Naja, vielleicht sollte ich die Max-Clients runtersetzen?

        wohl eher rauf, oder nicht? Was fuer ein system verwendet ihr und wieveile gelecihzeitige zugriffe habt ihr?

        Jan
        --

        1. Naja, vielleicht sollte ich die Max-Clients runtersetzen?
          wohl eher rauf, oder nicht? Was fuer ein system verwendet ihr
          und wieveile gelecihzeitige zugriffe habt ihr?

          Danke für die Antwort.
          Ist ein P3, 256MB RAM, PHP als Modul. Da laufen 3 Projekte drauf. 2 Auktionen, 1 Shop. Alles mit PHP generiert,  Besucherzahl in Stosszeiten ca. 300/Std. MaxClients steht bei 18. Habe ich eine wichtige Info vergessen?

          Ciao,
          Steffen

          1. Hi,

            Danke für die Antwort.
            Ist ein P3, 256MB RAM, PHP als Modul. Da laufen 3 Projekte drauf. 2 Auktionen, 1 Shop. Alles mit PHP generiert,  Besucherzahl in Stosszeiten ca. 300/Std. MaxClients steht bei 18. Habe ich eine wichtige Info vergessen?

            Hm, das System sollte spielend laufen.die fehlermeldung die kommt, ist ja auch der client, d.h. der mysqld haengt sich nciht auf. vielliecht helfen noch die logfiles des webservers und des mysqld.

            Jan
            --

            1. Hm, das System sollte spielend laufen.die fehlermeldung die
              kommt, ist ja auch der client, d.h. der mysqld haengt sich
              nciht auf. vielliecht helfen noch die logfiles des webservers
              und des mysqld.

              hi,
              wen oder was meinst du mit client? also, ich kann nur sagen dass ohne mysql-neustart nichts mehr geht. somit hängt sich schon mysqld auf. oder nicht? bin nicht so wirklich tief drin im thema, daher "klär mich doch mal auf" ;-)

              ciao,
               steffen

              1. Hi,

                wen oder was meinst du mit client? also, ich kann nur sagen dass ohne
                mysql-neustart nichts mehr geht. somit hängt sich schon mysqld auf.
                oder nicht? bin nicht so wirklich tief drin im thema, daher "klär mich
                doch mal auf" ;-)

                MySQL arbeitet nach dem altbewaehrten server<->client prinzip.
                Der Server (mysqld) verwaltet die Datenbanken und verarbetie querys, die
                ihm der client sendet und gibt entsprecchende Results zurueck. Der Client
                kann ein Kommandozeilenutility (mysql) sein oder aber auch PHP (Im
                PHP-Qellcode ist ein mysql client, der die kommunikation mit dem server
                abwickelt und dem Programmierer Zugriff auf die Datenbanken gibt). Fragen
                jetzt zuviele Clients den Server nach einem Result, sagt der rigendwann, ich
                hab keinen Bock mehr auf euch neuen, ich mach ersma die alten fertig und
                kommt ihr dran. i.d.r sollte ein client sein verbindung schnell genug wieder
                schliessen um anderen clients den zugriff auf den server zu ermoeglichen.

                Eine idee habe ich noch bekommen. verwende mal statt mysql_query()
                mysq_unbuffered_query(). das koennte einen performaceschub geben.

                Jan
                --

                1. Eine idee habe ich noch bekommen. verwende mal statt mysql_query()
                  mysq_unbuffered_query(). das koennte einen performaceschub geben.

                  Hallo Jan,
                  danke für die "Aufklärung" und den Tip...

                  Ciao,
                  Steffen