Egentligen termer anslutning pooling och beständig anslutning hänvisa till samma sak i fallet med mysqli i PHP.
Ihållande anslutning i detta fall hänvisar till MySQL-anslutningen öppen från PHP-skriptet som förblir öppet efter att skriptet har körts färdigt, för att användas igen i några senare körningar.
Anslutningspoolning betyder att det finns en pool av beständiga anslutningar som underhålls av PHP. En ledig anslutning från denna pool ges till PHP-skriptet som vill ansluta till MySQL och återgår till poolen när skriptet är klart.
Du kanske undrar varför vi behöver poolen av MySQL-anslutningar överhuvudtaget, varför använder vi inte bara en beständig anslutning för alla skript?
Det finns två anledningar till detta:
- PHP skapar en pool av MySQL-anslutningar baserat på
host/port/username/password
Begagnade. Om ett skript vill ansluta till MySQL med någonhost/port/username/password
kombination, PHP söker efter inaktiv persistent anslutning som har samma värden. Om den inte hittas skapas en ny beständig anslutning med dennahost/port/username/password
kombination. Så vi behöver minst lika många olika beständiga anslutningar som det finns olikahost/port/username/password
värden som används av alla skript. - Du kan inte köra två SQL-kommandon på en MySQL-anslutning samtidigt. Detta kan hända när två PHP-skript körs samtidigt. När två skript vill kommunicera med MySQL samtidigt skapas två beständiga MySQL-anslutningar. Antalet beständiga anslutningar i poolen är lika med det senaste antalet maximala parallella PHP-skript som körs, eller lika med den övre gränsen i
php.ini
.
Viktigt meddelande:
MySQL-anslutningspooler (och alla andra anslutningspooler) kan bara existera om PHP körs som ett webbserverplugin . Pooler fungerar inte när det fungerar i fast-cgi-läge eller på något annat sätt när PHP körbar avslutas efter skriptkörning.
Redigera:MySQL-anslutningspoolning kan användas i snabb-cgi-läge för PHP om webbservern är konfigurerad att återanvända en PHP fast-cgi-process för flera förfrågningar. Om PHP fast-cgi-processen är konfigurerad att avslutas efter att ha betjänat en begäran stängs alla dess MySQL-anslutningar.