Mysql
 sql >> Database >  >> RDS >> Mysql

Pool di connessioni vs connessione persistente mysqli

In realtà termini pool di connessioni e connessione persistente fare riferimento alla stessa cosa in caso di mysqli in PHP.

Connessione persistente in questo caso si riferisce alla connessione MySQL aperta dallo script PHP che rimane aperto al termine dell'esecuzione dello script, per essere riutilizzato in alcune esecuzioni successive.

Collegamento di connessioni significa che esiste un pool di connessioni persistenti mantenute da PHP. Una connessione inattiva da questo pool viene fornita allo script PHP che desidera connettersi a MySQL e tornare al pool al termine dello script.

Potresti chiederti perché abbiamo bisogno del pool di connessioni MySQL, perché non utilizziamo solo una connessione persistente per tutti gli script?

Ci sono due ragioni per questo:

  • PHP crea un pool di connessioni MySQL basato su host/port/username/password Usato. Se uno script vuole connettersi a MySQL con alcuni host/port/username/password combinazione, PHP cerca una connessione persistente inattiva con gli stessi valori. Se non viene trovato, viene creata una nuova connessione permanente con questo host/port/username/password combinazione. Quindi abbiamo bisogno di almeno tante diverse connessioni persistenti quante sono le diverse host/port/username/password valori utilizzati da tutti gli script.
  • Non puoi eseguire due comandi SQL su una connessione MySQL contemporaneamente. Questo può accadere quando due script PHP vengono eseguiti contemporaneamente. Quando due script vogliono comunicare con MySQL contemporaneamente, vengono create due connessioni MySQL persistenti. Il numero di connessioni persistenti nel pool è uguale all'ultimo numero massimo di script PHP paralleli eseguiti, o uguale al limite superiore impostato in php.ini .

Avviso importante:

I pool di connessioni MySQL (e qualsiasi altro pool di connessioni) possono esistere solo se PHP è in esecuzione come plug-in del server Web . I pool non funzionano quando funziona in modalità fast-cgi o in qualsiasi altro modo quando l'eseguibile PHP termina dopo l'esecuzione dello script.

Modifica:il pool di connessioni MySQL può essere utilizzato in modalità cgi veloce di PHP se il server Web è configurato per riutilizzare un processo cgi veloce PHP per più richieste. Se il processo PHP fast-cgi è configurato per uscire dopo aver servito una richiesta, tutte le sue connessioni MySQL vengono chiuse.