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 enhost/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 dennehost/port/username/password
kombination. Så vi har brug for mindst lige så mange forskellige vedvarende forbindelser, som der er forskelligehost/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.