Tom: + (MySQL) mysql_connect() oder mysql_pconnect()

Hallo!

Wenn ich viele DB-Abfragen über mehrere Seiten habe, ist es dann besser, die Verbindung mit mysql_connect() oder mit mysql_pconnect() aufzubauen (da die Verbindung ja auf der "nächsten" Seite auch gebraucht wird)? Und muss ich eine Verbindung mit mysql_pconnect() wieder beenden (und wenn ja wann)?

Danke!
Tom

  1. Hallo Tom,

    Wenn ich viele DB-Abfragen über mehrere Seiten habe, ist es dann besser, die Verbindung mit mysql_connect() oder mit mysql_pconnect() aufzubauen (da die Verbindung ja auf der "nächsten" Seite auch gebraucht wird)? Und muss ich eine Verbindung mit mysql_pconnect() wieder beenden (und wenn ja wann)?

    Ein Blick in die Doku hätte dir weitergeholfen:

    http://www.php.net/manual/de/features.persistent-connections.php

    http://www.php.net/manual/de/function.mysql-pconnect.php

    übrigens, bei einer persistent Verbindung solltes du mysql_insert_id http://www.php.net/manual/de/function.mysql-insert-id.php
    niemals ungeprüft verwenden.

    Viele Grüße

    Antje

    1. Hallo!

      Danke für die Links. Ich weiss jetzt aber immer noch nicht, ob ich eine Verbindung mit mysql_pconnect() irgendwo beenden muss. Und woher weiss ich, wann sie nicht mehr benötigt wird?

      Tom

      1. hi,

        Danke für die Links. Ich weiss jetzt aber immer noch nicht, ob ich eine Verbindung mit mysql_pconnect() irgendwo beenden muss.

        ja. andernfalls bleibt sie ja bestehen.

        dazu besonders folgenden abschnitt aus dem ersten oben geposteten link beachten:
        "Beachten Sie jedoch, dass dies auch ein paar Nachteile haben kann, wenn Sie eine Datenbank mit limitierten Verbindungen benutzen, welche durch persistente Verbindungen überschritten werden. Wenn Ihre Datenbank ein Limit von 16 gleichzeitigen Verbindungen hat, und aufgrund einer stark ausgelasteten Server-Session 17 Kind-Prozesse versuchen, eine Verbindung herzustellen, wird es einem nicht gelingen."

        Und woher weiss ich, wann sie nicht mehr benötigt wird?

        da wir die ablauflogik deiner scripte nicht kennen würde ich sagen, das musst du schon selber rausfinden.

        gruss,
        wahsaga

        1. Hallo!

          da wir die ablauflogik deiner scripte nicht kennen würde ich sagen, das musst du schon selber rausfinden.

          Naja, ein Besucher klickt auf den Seiten rum, auf jeder wird die DB gebraucht. Irgendwann verlässt der Besucher die Seite, dann ist es ja zu spät, um noch irgendwas zu machen. Gut wäre, die Verbindung würde getrenn, wenn nach einer bestimmten Zeit keine Anfrage mehr käme, oder?

          Tom

      2. Hallo Tom,

        Danke für die Links. Ich weiss jetzt aber immer noch nicht, ob ich eine Verbindung mit mysql_pconnect() irgendwo beenden muss. Und woher weiss ich, wann sie nicht mehr benötigt wird?

        Zitat von http://www.php.net/manual/de/function.mysql-pconnect.php Seitenmitte

        Erstens: vor dem Verbindungsaufbau wird zunächst versucht eine offene (persistente) Verbindung zum gleichen Host, mit dem gleichen Benutzernamen und Benutzerkennwort zu finden. Wenn das gelingt, wird die Verbindungskennung dieser Verbindung zurückgeliefert anstatt eine neue Verbindung aufzubauen.

        Zweitens: die Verbindung zum SQL Server wird beim Beenden des PHP-Skripts nicht geschlossen. Sie bleibt zur zukünftigen Verwendung bestehen. (mysql_close() schließt keine von mysql_pconnect() geöffneten Verbindungen).

        Ist Lesen wirklich so schwer? Du kannst die Verbindung nicht schließen. Je nach Einstellung des Webservers und des Datenbankservers wird die Verbindung nach einer bestimmten Zeit der Inaktivität geschlossen.

        Viele Grüße

        Antje

        1. Hallo,

          Ist Lesen wirklich so schwer?

          Nein, das kann ich schon halbwegs. Hab den Text auch gelesen und verstanden.

          Du kannst die Verbindung nicht schließen. Je nach Einstellung des Webservers und des Datenbankservers wird die Verbindung nach einer bestimmten Zeit der Inaktivität geschlossen.

          OK, das wollte ich wissen! Im Text steht ja nur, dass sie mit mysql_close() nicht beendet werden kann (hätte ja sein können, es gäbe so was wie mysql_pclose()).

          Danke für Eure Antworten!
          Tom

  2. Hallo nochmal!

    Irgendwie widersprechen sich Eure Antworten:

    Ich weiss jetzt aber immer noch nicht, ob ich eine Verbindung mit mysql_pconnect() irgendwo beenden muss.
    ja. andernfalls bleibt sie ja bestehen.

    und

    Du kannst die Verbindung nicht schließen. Je nach Einstellung des Webservers und des Datenbankservers wird die Verbindung nach einer bestimmten Zeit der Inaktivität geschlossen.

    Weiss jemand sicher, wie das nun ist?

    Tom