Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verbindungspooling vs. dauerhafte Verbindung mysqli

Bedeutet eigentlich Verbindungspooling und dauerhafte Verbindung beziehen sich auf dasselbe im Fall von mysqli in PHP.

Ständige Verbindung bezieht sich in diesem Fall auf eine vom PHP-Skript geöffnete MySQL-Verbindung, die geöffnet bleibt, nachdem das Skript ausgeführt wurde, um in einigen späteren Ausführungen erneut verwendet zu werden.

Verbindungspooling bedeutet, dass es einen Pool von persistenten Verbindungen gibt, die von PHP verwaltet werden. Eine Leerlaufverbindung aus diesem Pool wird an das PHP-Skript übergeben, das sich mit MySQL verbinden möchte, und an den Pool zurückgegeben, wenn das Skript beendet ist.

Sie fragen sich vielleicht, warum wir überhaupt den Pool von MySQL-Verbindungen brauchen, warum verwenden wir nicht nur eine dauerhafte Verbindung für alle Skripte?

Dafür gibt es zwei Gründe:

  • PHP erstellt einen Pool von MySQL-Verbindungen basierend auf host/port/username/password Gebraucht. Wenn ein Skript sich mit host/port/username/password mit MySQL verbinden möchte Kombination sucht PHP nach einer inaktiven dauerhaften Verbindung, die dieselben Werte hat. Wenn es nicht gefunden wird, wird eine neue dauerhafte Verbindung mit diesem host/port/username/password erstellt Kombination. Wir brauchen also mindestens so viele verschiedene dauerhafte Verbindungen, wie es verschiedene host/port/username/password gibt Werte, die von allen Skripten verwendet werden.
  • Sie können nicht gleichzeitig zwei SQL-Befehle auf einer MySQL-Verbindung ausführen. Dies kann passieren, wenn zwei PHP-Skripte gleichzeitig ausgeführt werden. Wenn zwei Skripte gleichzeitig mit MySQL kommunizieren möchten, werden zwei dauerhafte MySQL-Verbindungen erstellt. Die Anzahl der dauerhaften Verbindungen im Pool ist gleich der letzten Anzahl der maximal ausgeführten parallelen PHP-Skripte oder gleich der in php.ini festgelegten Obergrenze .

Wichtiger Hinweis:

MySQL-Verbindungspools (und alle anderen Verbindungspools) können nur existieren, wenn PHP als Webserver-Plugin ausgeführt wird . Pools funktionieren nicht im Fast-CGI-Modus oder auf andere Weise, wenn die ausführbare PHP-Datei nach der Skriptausführung beendet wird.

Bearbeiten:Das MySQL-Verbindungspooling kann im Fast-CGI-Modus von PHP verwendet werden, wenn der Webserver so konfiguriert ist, dass er einen PHP-Fast-CGI-Prozess für mehrere Anforderungen wiederverwendet. Wenn der PHP-Fast-CGI-Prozess so konfiguriert ist, dass er nach der Bearbeitung einer Anfrage beendet wird, werden alle seine MySQL-Verbindungen geschlossen.