AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Wie kommt eine persistente MySQL-Verbindung zustande?
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Wie kommt eine persistente MySQL-Verbindung zustande?

Ein Thema von Matze · begonnen am 20. Jan 2009 · letzter Beitrag vom 22. Jan 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#11

Re: [PHP] Wie kommt eine permanente MySQL-Verbindung zustand

  Alt 21. Jan 2009, 21:33
Moin Matze,

ich nehme an das Limit sind 25 Verbindungen, nicht Anfragen. Letzteres waere etwas arg knapp

Wie dem auch sei - dieses Limit bedeutet, dass maximal 25 Verbindungen gleichzeitig offen sein duerfen. Soll heissen: waehrend ein Script generiert wird, koennen hoechstens 24 andere Leute eine Seite aufrufen. Wenn 50 Personen gleichzeitig versuchen, auf deine zuzugreifen wird die Haelfte davon erstmal warten muessen, es sei denn der Server lehnt die Verbindung sofort ab. Ich empfehle dir, das Limit hochzusetzen. Wenn du immer noch bei MW-Internet bist kannst du das im KCC selbst tun, bei anderen Hostern musst du nachfragen. Dreistellig sollte die Zahl schon sein, es sei denn du hoffst dass nie viele Leute auf die Seite zugreifen werden

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: [PHP] Wie kommt eine permanente MySQL-Verbindung zustand

  Alt 21. Jan 2009, 21:37
Hi Andy,

jo ich meinte Verbindungen, stimmt.
Ich bin noch bei MW-I, aber nicht mit diesem Projekt und da kann ich auch nichts hochsetzen. Dass 25 so knapp sind, kann ich mir auch nicht vorstellen, sonst hätten die das sicher höher eingestellt.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#13

Re: [PHP] Wie kommt eine permanente MySQL-Verbindung zustand

  Alt 21. Jan 2009, 23:24
Moin,

zur allgemeinen Info: die gesuchte Einstellung nennt sich mysql.max_links. Wenn du dort -1 eintraegst, wird das Limit komplett entfernt. Bevor du aber das Limit ewig weit hochstellst, bedenke aber eines: es gibt ein paar Cache-Sizes, die pro Verbindung reserviert haben. Ich hab die genauen Conf-Eintraege grad nicht im Kopf, aber kann sie bei Interesse gerne raussuchen. Beim Starten des MySQL-Servers wird der natuerlich versuchen, diesen Speicher zu reservieren. Soll heissen: wenn du 2MB einstellst, und als Connection-Limit 1000 einstellst, wird der Server versuchen, 2 GB Speicher zu reservieren. Hinzu kommen noch saemtliche anderen Speichergroessen. Da kommst schnell ueber das, was unter 32 Bit moeglich ist, bzw. auch ueber das Hardware-Limit. Wir haben uns da nen Server mal auf sagenhafte 24 GB Speicher konfiguriert, da wundert man sich erstmal warum man beim Neustart des Servers erstmal ne Fehlermeldung um die Ohren geworfen kriegt.

Und um ganz kurz etwas Licht ins Dunkel zu bringen, da ich grad deinen Blog gelesen hab: mysql_pconnect() oeffnet nicht eine permanente sondern eine persistente Verbindung zum DB-Server. Diese Verbindungen werden erstellt aber erst nach einer bestimmten Zeit (die in der MySQL-Config definiert wird) geschlossen. PHP laesst solche Verbindungen offen wenn dein Script terminiert. Dass diese Verbindungen natuerlich "immer" da sind, duerfte einleuchten. Das Ganze ist allerdings kein Fehler oder Nachteil. V.a. wenn viele Besucher auf der Seite sind hat der Server teilweise viel zu tun, die einkommenden Verbindungen zu verwalten. Bei persistenten Verbindungen aendert sich das Verhalten: beim Aufruf von mysql_pconnect() guckt PHP erstmal nach, ob eine freie (Verbindungen koennen immer nur von einem Thread/Prozess verwendet werden) Verbindung zum angegebenen Server mit den angegebenen Credentials verfuegbar ist. Wenn ja, dann wird diese Verbindung zurueckgegeben und dein Script laeuft so weiter, als ob eine neue Verbindung erstellt worden waere. Nur wenn keine Verbindung frei ist, wird eine neue erstellt (vorausgesetzt das Limit fuer persistente Verbindungen wurde nicht erreicht). Dies spart dir natuerlich die Zeit die benoetigt wird, die Verbindung zum Server herzustellen. Vor allem wenn MySQL- und HTTP-Server nicht auf der selben Maschine laufen kann dies durchaus einige Zeitvorteile mit sich bringen.
Natuerlich wird die Verbindung dann auch nicht geschlossen, sobald das Script beendet wird - dies wuerde das System natuerlich ad absurdum fuehren.

Die normale 0815-Webanwendung ist normalerweise nicht auf persistente Verbindungen angewiesen, jedoch gibt es genug Faelle, wo diese Verbindungen Sinn machen.

Zitat von Valle:
Das Problem ist doch ganz einfach: Eine Permanente Verbindung hält eine TCP-Verbindung zum Server. Je mehr es von diesen Verbindungen gibt, desto weniger sind noch verfügbar. Sofern ich mich nicht irre, gehen die verfügbaren TCP-Ports nur bis 65536, was heißt, dass es (weniger als) 65536 Verbindungen gleichzeitig geben kann.
Verwechsle nicht TCP/IP-Verbindungen mit Datenbankverbindungen. Eine Verbindung zum MySQL-Server muss nicht unbedingt ueber TCP erfolgen. Es gibt genug Moeglichkeiten, diese ueber Named Pipes oder sonstige IPC-Methoden laufen zu lassen

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: [PHP] Wie kommt eine permanente MySQL-Verbindung zustand

  Alt 22. Jan 2009, 05:54
Guten Morgen Andy,

danke für die umfangreiche Info.

In meinem Blog habe ich übrigens nicht erwähnt, dass mysql_pconnect() eine permanente Verbindung aufbaut, zumindest sehe ich keinen Satz dieser Art.
Aber wie gesagt, das Limit kann ich nicht hochsetzen. Ich hoffe mal, dass nun alles so funktioniert wie es soll.

Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#15

Re: [PHP] Wie kommt eine permanente MySQL-Verbindung zustand

  Alt 22. Jan 2009, 21:26
Zitat von Matze:
In meinem Blog habe ich übrigens nicht erwähnt, dass mysql_pconnect() eine permanente Verbindung aufbaut, zumindest sehe ich keinen Satz dieser Art.
War etwas ungluecklich formuliert von mir, aber guck mal in den Titel hier

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: [PHP] Wie kommt eine persistente MySQL-Verbindung zustan

  Alt 22. Jan 2009, 21:38
Hi Andy,

hab's geändert. Nun sieht es so aus, als ob ich genau wusste, was das Problem war, denn nach dem Schlagwort zu suchen bringt einem ja die Lösung. *g*

Grüße, Matze
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz