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

Forbindelsespooling vs vedvarende forbindelse mysqli

Faktisk termer forbindelsespooling og vedvarende forbindelse henvise til det samme i tilfælde af mysqli i PHP.

Vedholdende forbindelse refererer i dette tilfælde til MySQL-forbindelse åben fra PHP-script, som forbliver åben, efter at scriptet er færdig med at eksekvere, for at blive brugt igen i nogle senere eksekveringer.

Forbindelsespooling betyder, at der er en pulje af vedvarende forbindelser vedligeholdt af PHP. Én ledig forbindelse fra denne pulje gives til PHP-script, som ønsker at oprette forbindelse til MySQL og returneres til pool, når scriptet er færdigt.

Du undrer dig måske over, hvorfor vi overhovedet har brug for puljen af ​​MySQL-forbindelser, hvorfor bruger vi ikke kun én vedvarende forbindelse til alle scripts?

Der er to grunde til dette:

  • PHP opretter en pulje af MySQL-forbindelser baseret på host/port/username/password Brugt. Hvis et script ønsker at oprette forbindelse til MySQL med en host/port/username/password kombination, søger PHP efter inaktiv vedvarende forbindelse, som har de samme værdier. Hvis den ikke findes, oprettes en ny vedvarende forbindelse med denne host/port/username/password kombination. Så vi har brug for mindst lige så mange forskellige vedvarende forbindelser, som der er forskellige host/port/username/password værdier, der bruges af alle scripts.
  • Du kan ikke udføre to SQL-kommandoer på én MySQL-forbindelse på samme tid. Dette kan ske, når to PHP-scripts udføres samtidigt. Når to scripts ønsker at kommunikere med MySQL på samme tid, oprettes to vedvarende MySQL-forbindelser. Antallet af vedvarende forbindelser i puljen er lig med det sidste antal af maksimalt udførte parallelle PHP-scripts, eller lig med den øvre grænse sat i php.ini .

Vigtig meddelelse:

MySQL-forbindelsespuljer (og alle andre forbindelsespuljer) kan kun eksistere, hvis PHP kører som et webserver-plugin . Pools fungerer ikke, når det fungerer i fast-cgi-tilstand eller på nogen anden måde, når PHP-eksekverbare filer afsluttes efter scriptudførelse.

Rediger:MySQL-forbindelsespooling kan bruges i hurtig-cgi-tilstand i PHP, hvis webserveren er konfigureret til at genbruge én PHP fast-cgi-proces til flere anmodninger. Hvis PHP fast-cgi-processen er konfigureret til at afslutte efter at have serveret én anmodning, lukkes alle dens MySQL-forbindelser.



  1. NLS_LANG indstilling for JDBC tynd driver?

  2. Vælg få hele rækken svarende til max i MySQL Group

  3. Sådan viser du serversorteringen i MySQL

  4. Pyodbc - Datakildenavn ikke fundet, og ingen standarddriver angivet