Tach!
Ich war gerade an basteleien mit Ajax und PHP in Verbindung mit MySQL. Wenn ich Inhalte in ein DIV lade, muss ich jedes mal eine neue Verbindung zum MySQL Server aufbauen, also mysql_connect und mysql_select_db in die Dateien neu schreiben die ich einbinde, obwohl auf der Seite ja schon was offen ist. Meine Frage, gibt es da eine Möglichkeit ohne dass ich in jeder Datei eine Verbindung neu aufbauen muss?
"Auf einer Seite" ist serverseitig nichts mehr offen. Der Server hat seine Arbeit getan, die Seite ausgeliefert und widmet sich nun neuen Request, ohne sich zu den alten irgendwas zu merken. Wenn der Browser was neues will, muss er einen neuen Request stellen. So zumindest funktioniert herkömmliches HTTP.
Das CSS und JS gilt trotz der Einbindung ja auch weiterhin global, und die Werte werden ja auch direkt übernommen. Daher habe ich mir überlegt, ob das nicht mit der MySQL Verbindung auch möglich ist.
Welche Werte werden wo übernommen? Und was genau hat die serverseitige MySQL-Verbindung mit den Client-Dingen deiner Meinung nach für eine Gemeinsamkeit?
Ich kann mir vorstellen, dass ja sozusagen eigentlich die PHP Datei schon geladen ist und daher die MySQL Verbindung trennt, weil ja erst danach der Request durch den Nutzer stattfindet, sich die anderen Sachen ja aber nicht schließen. Die Dateien bleiben halt eingebunden. Kann man das dennoch Ressourcenschonend umgehen?
Vermutlich musst du erstmal zwischen serverseitig und clientseitig unterscheiden lernen, und dass es ohne spezielle Maßnahmen keine stehende Verbindung zwischen beiden gibt.
Ich habe schon an mysql_pconnect gedacht, allerdings habe ich keinerlei Erfahrung wie ich damit richtig umgehe, damit es nicht zuviel Ressourcen zieht und gegenüber dem mysql_connect einen Vorteil besitzt. Soll ich lieber in jeder Datei eine neue Verbindung aufbauen oder habt ihr eine tolle Idee für mich?
Was für ein Problem mit dem Verbindungaufbau hast du denn? Ist es ein echtes, nachgemessenes, oder ist es nur ein Bauchgefühl?
Wie bekommt man aber eine dauerhafte Verbindung hin? Die HTTP-Verbindung offenzuhalten, ist nur eine Einweg-Kommunikation (in Richtung Client) und auch mit Nachteilen wie dem Timeout verbunden. Websockets ist hingegen eine Technik, die für eine bidirektionale Verbindung vorgesehen ist. Ich denke aber nicht, dass du dir den Aufwand antun solltest, denn mir scheint dein Problem nur ein Pseudoproblem zu sein, für das du eigentlich keine Lösung brauchst. Der MySQL-Verbindungsaufbau ist dafür konzipiert, dass er sehr oft in kurzer Zeit ausgeführt werden kann.
dedlfix.