Właściwie terminy zestawianie połączeń i trwałe połączenie odnoszą się do tego samego w przypadku mysqli w PHP.
Stałe połączenie w tym przypadku odnosi się do połączenia MySQL otwartego ze skryptu PHP, który pozostaje otwarty po zakończeniu wykonywania skryptu, aby mógł zostać użyty ponownie w niektórych późniejszych wykonaniach.
Łączenie połączeń oznacza, że istnieje pula trwałych połączeń utrzymywanych przez PHP. Jedno bezczynne połączenie z tej puli jest przekazywane skryptowi PHP, który chce połączyć się z MySQL i wraca do puli po zakończeniu działania skryptu.
Możesz się zastanawiać, po co nam w ogóle pula połączeń MySQL, dlaczego nie używamy tylko jednego stałego połączenia dla wszystkich skryptów?
Są ku temu dwa powody:
- PHP tworzy pulę połączeń MySQL w oparciu o
host/port/username/password
używany. Jeśli jeden skrypt chce połączyć się z MySQL przy użyciu jakiegośhost/port/username/password
połączenie, PHP szuka bezczynnego trwałego połączenia, które ma te same wartości. Jeśli nie zostanie znaleziony, zostanie utworzone nowe trwałe połączenie z tymhost/port/username/password
połączenie. Potrzebujemy więc co najmniej tylu różnych trwałych połączeń, ile jest różnychhost/port/username/password
wartości używane przez wszystkie skrypty. - Nie można jednocześnie wykonać dwóch poleceń SQL na jednym połączeniu MySQL. Może się to zdarzyć, gdy dwa skrypty PHP są wykonywane jednocześnie. Gdy dwa skrypty chcą jednocześnie komunikować się z MySQL, tworzone są dwa trwałe połączenia MySQL. Liczba trwałych połączeń w puli jest równa ostatniej liczbie maksymalnie wykonanych równoległych skryptów PHP lub jest równa górnemu limitowi ustawionemu w
php.ini
.
Ważna uwaga:
Pule połączeń MySQL (i dowolne inne pule połączeń) mogą istnieć tylko wtedy, gdy PHP działa jako wtyczka serwera WWW . Pule nie działają, gdy działają w trybie fast-cgi lub w jakikolwiek inny sposób, gdy plik wykonywalny PHP kończy działanie po wykonaniu skryptu.
Edycja:Pula połączeń MySQL może być używana w trybie fast-cgi PHP, jeśli serwer WWW jest skonfigurowany do ponownego użycia jednego procesu PHP fast-cgi dla wielu żądań. Jeśli proces PHP fast-cgi jest skonfigurowany do zamykania po obsłużeniu jednego żądania, wszystkie jego połączenia MySQL są zamykane.