Eigenlijk termen connection pooling en aanhoudende verbinding verwijzen naar hetzelfde in het geval van mysqli in PHP.
Aanhoudende verbinding verwijst in dit geval naar de MySQL-verbinding die is geopend vanuit het PHP-script en die open blijft nadat het script is uitgevoerd, om opnieuw te worden gebruikt in sommige latere uitvoeringen.
Verbindingspooling betekent dat er een pool van permanente verbindingen is die wordt onderhouden door PHP. Eén inactieve verbinding van deze pool wordt gegeven aan het PHP-script dat verbinding wil maken met MySQL en wordt teruggestuurd naar de pool wanneer het script is voltooid.
Je vraagt je misschien af waarom we de pool van MySQL-verbindingen überhaupt nodig hebben, waarom gebruiken we niet slechts één permanente verbinding voor alle scripts?
Hier zijn twee redenen voor:
- PHP maakt een pool van MySQL-verbindingen op basis van
host/port/username/password
gebruikt. Als een script verbinding wil maken met MySQL met eenhost/port/username/password
combinatie zoekt PHP naar een inactieve persistente verbinding die dezelfde waarden heeft. Als het niet wordt gevonden, wordt er een nieuwe permanente verbinding gemaakt met dezehost/port/username/password
combinatie. We hebben dus minstens net zoveel verschillende persistente verbindingen nodig als er verschillendehost/port/username/password
zijn. waarden die door alle scripts worden gebruikt. - U kunt niet tegelijkertijd twee SQL-opdrachten op één MySQL-verbinding uitvoeren. Dit kan gebeuren wanneer twee PHP-scripts tegelijkertijd worden uitgevoerd. Wanneer twee scripts tegelijkertijd met MySQL willen communiceren, worden er twee persistente MySQL-verbindingen gemaakt. Het aantal persistente verbindingen in de pool is gelijk aan het laatste aantal maximale parallelle PHP-scripts dat is uitgevoerd, of is gelijk aan de bovenlimiet die is ingesteld in
php.ini
.
Belangrijke mededeling:
MySQL-verbindingspools (en alle andere verbindingspools) kunnen alleen bestaan als PHP wordt uitgevoerd als een webserver-plug-in . Pools werken niet wanneer het werkt in fast-cgi-modus of op een andere manier wanneer het uitvoerbare PHP-bestand wordt beëindigd na uitvoering van het script.
Bewerken:MySQL-verbindingspooling kan worden gebruikt in de snelle cgi-modus van PHP als de webserver is geconfigureerd om één PHP snel-cgi-proces opnieuw te gebruiken voor meerdere verzoeken. Als het PHP fast-cgi-proces is geconfigureerd om af te sluiten na het uitvoeren van één verzoek, worden alle MySQL-verbindingen gesloten.