Trwałość jest wykonywana przez kopię PHP, która jest osadzona na serwerze WWW. Normalnie miałbyś rację - gdyby PHP działało w trybie CGI, nie byłoby możliwe posiadanie trwałego połączenia, ponieważ nie byłoby nic do utrwalenia po wykonaniu żądania i zamknięciu PHP.
Jednakże, ponieważ w serwerze sieciowym jest osadzona kopia PHP, a sam serwer działa między żądaniami, możliwe jest utrzymanie puli trwałych połączeń w ramach tego "stałego" PHP.
Należy jednak zauważyć, że w modelach serwerów Apache typu multi-worker pule połączeń są utrzymywane NA DZIECKO. Jeśli ustawisz limit puli na 10, będziesz mieć 10 połączeń na dziecko Apache. 20 dzieci =200 połączeń.
Trwałe połączenia prowadzą również do długotrwałych problemów z zakleszczeniami i innymi trudnymi do debugowania problemami. Pamiętaj - nie ma gwarancji, że żądania HTTP użytkownika będą obsługiwane przez SAME połączenie apache child/mysql. Jeśli skrypt umrze w połowie transakcji w bazie danych, ta transakcja NIE wycofać, ponieważ MySQL nie widzi strony HTTP — widzi tylko, że połączenie mysql<->apache jest nadal otwarte i zakłada, że wszystko jest w porządku.
Następny użytkownik, który trafi w tę konkretną kombinację apache/mysql dziecko/połączenie, magicznie znajdzie się w środku tej transakcji, bez żadnej wskazówki, że transakcja jest otwarta. Zasadniczo jest to internetowy odpowiednik niespłukanej toalety - wszystkie „śmieci” poprzedniego użytkownika wciąż tam są.
Dzięki nietrwałym połączeniom masz gwarancję „czystego” środowiska za każdym razem, gdy się łączysz.