Ve skutečnosti jde o sdružování připojení a trvalé připojení totéž platí v případě mysqli v PHP.
Trvalé připojení v tomto případě odkazuje na připojení MySQL otevřené z PHP skriptu, které zůstane otevřené i po dokončení skriptu, aby bylo možné jej znovu použít v některých pozdějších spuštěních.
Sdružování připojení znamená, že existuje fond trvalých připojení udržovaných PHP. Jedno nečinné připojení z tohoto fondu je přiděleno skriptu PHP, který se chce připojit k MySQL a po dokončení skriptu se vrátí do fondu.
Mohli byste se divit, proč vůbec potřebujeme fond připojení MySQL, proč pro všechny skripty nepoužijeme pouze jedno trvalé připojení?
Existují dva důvody:
- PHP vytváří fond připojení MySQL na základě
host/port/username/password
použitý. Pokud se jeden skript chce připojit k MySQL pomocí nějakéhohost/port/username/password
kombinaci, PHP hledá nečinné trvalé připojení, které má stejné hodnoty. Pokud není nalezen, vytvoří se nové trvalé připojení s tímtohost/port/username/password
kombinace. Potřebujeme tedy alespoň tolik různých trvalých připojení, kolik je různýchhost/port/username/password
hodnoty používané všemi skripty. - Nemůžete provádět dva příkazy SQL na jednom připojení MySQL současně. To se může stát, když jsou současně spuštěny dva PHP skripty. Když dva skripty chtějí komunikovat s MySQL současně, vytvoří se dvě trvalá připojení MySQL. Počet trvalých připojení ve fondu se rovná poslednímu počtu maximálního počtu spuštěných paralelních PHP skriptů nebo se rovná hornímu limitu nastavenému v
php.ini
.
Důležité upozornění:
Fondy připojení MySQL (a jakékoli jiné fondy připojení) mohou existovat pouze v případě, že se PHP spouští jako plugin webového serveru . Fondy nefungují, když pracuje v režimu rychlého cgi nebo jakýmkoli jiným způsobem, když se spustitelný PHP ukončí po spuštění skriptu.
Edit:Sdružování připojení MySQL lze použít v režimu rychlého cgi PHP, pokud je webový server nakonfigurován pro opětovné použití jednoho procesu rychlého cgi PHP pro více požadavků. Pokud je proces PHP fast-cgi nakonfigurován tak, aby skončil po obsloužení jednoho požadavku, všechna jeho připojení k MySQL jsou uzavřena.