Oder sollte ich die Datenbank zwischendurch trotzdem schließen und für die UPDATE Anfrage neu aufbauen?
Beware. Regelmäßig ist das Gegenteil der Fall.
Du wirst nicht Deine Datenbank abfragen, die Verbidnung schließen und ein paar Mikrosekunden später mit dem ganzen Geraffel
- DNS-Auflösung (optional)
- TCP-Handshake
- SSL-Verschlüsselung aushandeln
- Authentifizierung
wieder anfangen. Das dauert nämlich länger und kostet regelmäßig mehr Ressourcen als die Verbindung offen zu halten.
Hint: 1. und 2. entfallen bei Verbindung zu 'localhost' (nicht: 127.0.0.1) auf unixoiden Systemen → da wird automatisch der konfigurierte Socket (siehe Konfiguration in /etc/mysql) genutzt. Der ist schneller!
Hint: Unter Windows ist es aber schlauer, 127.0.0.1 anzugeben, weil seit Windows 7 der localhost nicht mehr in c:\windows\system32\drivers\etc\hosts steht. Es dauert dann eine Weile bis sich ein Nameserver erbarmt. Microsoft halt…
Statt dessen kennt mysqli::connect sogar einen Trick:
Prepending host by p: opens a persistent connection. mysqli_change_user() is automatically called on connections opened from the connection pool
Dem Hostname ein p voranstellen: Öffnet eine dauerhafte Verbindung. mysqli_change_user() wird automatisch bei Verbindungen aufgerufen, die aus dem Verbindungspool geöffnet werden.
So richtig Sinn macht der Verbindungspool aber (wohl) nur, wenn php selbst als Server (php -S …
), FPM-CGI oder als Modul des Apache und nicht als pures cgi läuft:
Das sieht dann auf meinem Server (verkürzt) so aus:
~$ ps -elF | grep php | grep -v grep
5 S www-data 4709 ... php-fpm: pool www
5 S www-data 12741 ... php-fpm: pool www
5 S www-data 18590 ... php-fpm: pool www
4 S root 26280 ... php-fpm: master process (/etc/php/.../php-fpm.conf)
Der Masterprozess kann hier also alle möglichen Pools offen halten.
Aber daraus, dass es ihn (den Verbindungspool) gibt und er Vorteile bietet (schnelle Wiederverwendung ohne die Schritte 1-3 der obigen Liste) kann man entnehmen, dass das Beenden der Verbindung weit weniger notwendig erscheint als mache Trainer wohl recht nassforsch in fortgeschrittenen Seminaren behaupten.