![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 137 Pomógł: 2 Dołączył: 2.07.2007 Skąd: Ostrzeszów Ostrzeżenie: (0%) ![]() ![]() |
Oto pewne wykorzystanie Skeletona:
Jego działanie polega na tym, że gdy pierwszy raz korzystamy ze statycznej metody PDO2::skeleton() utworzy się połączenie z bazą danych, za każdym kolejnym wykonaniem zwróci obiekt, który już powstał. Zastanawiam się nad wykorzystaniem tego przypadku czy warto. Co jest lepsze. Pierwszy przypadek: tworze skeletona przy logowaniu użytkownika (czyli tworze połączenie z bazą danych) i trzymam w sesji, gdzie za każdym razem, gdy przechodzę do innego pliku odczytuje z sesji skeletona i metodą pobieram połączoną już bazę danych. Drugi przypadek: Za każdym razem, gdy przechodzę do innego pliku .php w systemie tworzę nowe połączenie z bazą danych i zamykam je. Co jest lepsze ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Nie spotkałem się jeszcze z nazwą "skeleton", to co podałeś to "singleton".
2. Jest bardzo mało przypadków, gdzie jego wykorzystanie ma jakikolwiek sens, mimo to w sieci znajdziesz pełno przykładów jego użycia, niestety najczęściej robią one więcej złego niż dobrego. 3. Dane wrzucone do sesji są poddawane procesowi serializacji przed zapisem i deserializacji przed odczytem (Google: https://www.google.pl/search?q=php+serializ...93&ie=UTF-8 ) więc na dobrą sprawę i tak będziesz miał tworzony nowy obiekt na każdej podstronie. Dodatkowo dane typu resource (PDO trzyma takie coś w swoim wnętrzu) nie mogą być serializowane. 4. Utrzymywanie jakiejś puli obiektów PDO wykorzystywanych przez kolejne żądania (connection pool) byłoby bardzo dobre, niestety w PHP na dobrą sprawę nie da się tego osiągnąć - istnieje coś takiego jak persistent connections ale nie sprawuje się to za dobrze. Jeżeli nie widzisz miejsca na użycie Singletonu, nie próbuj go nigdzie wrzucić na siłę. Ten post edytował Crozin 6.07.2014, 19:56:03 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 09:24 |