AWWW-1st3.6-w09.tresc-1.0-Slajd34

From Studia Informatyczne

Stałe połączenia z bazą danych w PHP

Stałe połączenia z bazą danych w PHP


PHP nie oferuje mechanizmu pul połączeń (connection pooling). Wydajność komunikacji z bazą danych poprzez redukcję czasu nawiązywania połączenia można w aplikacjach PHP zwiększyć stosując tzw. stałe połączenia (ang. persistent connections). Rozwiązanie to jest przydatne gdy koszt nawiązania połączenia jest wysoki, co zależy np. od wykorzystywanego systemu zarządzania bazą danych.

Mechanizm stałych połączeń polega na utrzymywaniu połączeń przez procesy serwera HTTP obsługujące żądania. Gdy skrypt próbuje nawiązać stałe połączenie, PHP sprawdza czy proces uruchamiający skrypt posiada już otwarte wcześniej identyczne połączenie (z tym samym serwerem, nazwą użytkownika i hasłem). Jeśli tak – zostanie ono wykorzystane ponownie, jeśli nie - utworzone będzie nowe.

Stałe połączenia pozwalają najczęściej znacząco poprawić wydajność aplikacji. Z ich wykorzystaniem wiążą się jednak pewne zagrożenia. Błędy w oprogramowaniu blokowania danych mogą zablokować dane dla kolejnych wywołań skryptu. Z kolei źle dobrana liczba procesów usługowych serwera może doprowadzić do wyczerpania limitu połączeń z serwerem bazy danych.

Stałe połączenia od momentu ich otwarcia są wykorzystywane w kodzie tak jak zwykłe. Modyfikacja skryptu korzystającego ze zwykłych połączeń tak by wykorzystywał stałe sprowadza się zmiany nazwy funkcji lub dodania parametru wywołania. Na slajdzie pokazano przykłady otwarcia stałego połączenia przy korzystaniu z rozszerzenia dla MySQL (funkcją mysql_pconnect() zamiast mysql_connect()) i uniwersalnego rozszerzenia PDO (poprzez dodanie parametru PDO::ATTR_PERSISTENT w wywołaniu konstruktora połączenia).


<< Poprzedni slajd | Spis treści | Następny slajd >>