Nein. Es gibt sogar persistente Verbindung und Pooling.
bearbeitet von Raketenwilli> 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 **Mikro**sekunden später mit dem ganzen Geraffel
1. DNS-Auflösung (optional)
2. TCP-Handshake
3. SSL-Verschlüsselung aushandeln
4. 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 Systemeen, 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](https://www.php.net/manual/de/mysqli.construct.php) 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](https://www.php.net/manual/de/install.fpm.php) 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.
Nein. Es gibt sogar persistente Verbindung und Pooling.
bearbeitet von Raketenwilli> 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 **Mikro**sekunden später mit dem ganzen Geraffel
1. DNS-Auflösung (optional)
2. TCP-Handshake
3. SSL-Verschlüsselung aushandeln
4. 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 Systemeen, 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](https://www.php.net/manual/de/mysqli.construct.php) 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](https://www.php.net/manual/de/install.fpm.php) 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.
Nein. Es gibt sogar persistente Verbindung und Pooling.
bearbeitet von Raketenwilli> 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 **Mikro**sekunden später mit dem ganzen Geraffel
1. DNS-Auflösung (optional)
2. TCP-Handshake
3. SSL-Verschlüsselung aushandeln
4. 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 Systemeen, 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\ steht. Es dauert dann eine Weile bis sich ein Nameserver erbarmt. Microsoft halt.
**Statt dessen kennt [mysqli::connect](https://www.php.net/manual/de/mysqli.construct.php) 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](https://www.php.net/manual/de/install.fpm.php) 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.
Nein. Es gibt sogar persistente Verbindung und Pooling.
bearbeitet von Raketenwilli> 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 **Mikro**sekunden später mit dem ganzen Geraffel
1. DNS-Auflösung (optional)
2. TCP-Handshake
3. SSL-Verschlüsselung aushandeln
4. 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 Systemeen, 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\ steht. Es dauert dann eine Weile bis sich ein Nameserver erbarmt. Microsoft halt.
**Statt dessen kennt [mysqli::connect](https://www.php.net/manual/de/mysqli.construct.php) 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](https://www.php.net/manual/de/install.fpm.php) 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.
Nein. Es gibt sogar persistente Verbindung und Pooling.
bearbeitet von Raketenwilli> 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 **Mikro**sekunden später mit dem ganzen Geraffel
1. DNS-Auflösung (optional)
2. TCP-Handshake
3. SSL-Verschlüsselung aushandeln
4. 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 Systemeen, 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\ steht. Es dauert dann eine Weile bis sich ein Nameserver erbarmt. Microsoft halt.
**Statt dessen kennt [mysqli::connect](https://www.php.net/manual/de/mysqli.construct.php) 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](https://www.php.net/manual/de/install.fpm.php) 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 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.
Nein. Es gibt sogar persistente Verbindung und Pooling.
bearbeitet von Raketenwilli> 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 **Mikro**sekunden später mit dem ganzen Geraffel
1. DNS-Auflösung (optional)
2. TCP-Handshake
3. SSL-Verschlüsselung aushandeln
4. 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 Systemeen, 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\ steht. Es dauert dann eine Weile bis sich ein Nameserver erbarmt. Microsoft halt.
**Statt dessen kennt [mysqli::connect](https://www.php.net/manual/de/mysqli.construct.php) 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](https://www.php.net/manual/de/install.fpm.php) oder als Modul des Apache und nicht als pures cgi läuft:
Das sieht dann verkürzt o 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 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.
Nein. Es gibt sogar persistente Verbindung und Pooling.
bearbeitet von Raketenwilli> Oder sollte ich die Datenbank zwischendurch trotzdem schließen und für die UPDATE Anfrage neu aufbauen?
Beware.
Du wirst nicht Deine Datenbank abfragen, die Verbisnung schließen und ein paar Mikrosekunden später mit dem ganzen Geraffel
1. DNS-Auflösung (optional)
2. TCP-Handshake
3. SSL-Verschlüsselung aushandeln
4. Authentifizierung
wieder anfangen. Das dauert nämlich länger, kostet mehr Ressourcen als die Verbindung offen zu halten.
Hint: 1. und 2. entfallen bei Verbindung zu localhost (nicht: 127.0.0.1 auf unixoiden Systemeen, 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\ steht. Es dauert dann eine Weile bis sich ein Nameserver erbarmt. Microsoft halt.
**Statt dessen kennt [mysqli::connect](https://www.php.net/manual/de/mysqli.construct.php) 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 als Modul des Apache und nicht als [sonstwas]cgi läuft. Bei shared Servern ist letztes aber technisch notwendig.
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.