sql >> Databasteknik >  >> RDS >> Mysql

Anslutning pooling vs beständig anslutning mysqli

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ågon host/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 denna host/port/username/password kombination. Så vi behöver minst lika många olika beständiga anslutningar som det finns olika host/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.



  1. Överför kontrollen till en specifik rad med hjälp av kommandot Goto Label i PLSQL

  2. PHP:mysql_connect() fungerar inte via kommandoraden

  3. PHP-funktion fungerar bara en gång

  4. Kan kommentarer hämma prestandan för lagrad procedur?