![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 30.05.2007 Skąd: Wędzina Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam dziwny problem z destruktorami i nie za bardzo wiem jak go rozwiązać. Przeglądałem trochę forum i manuala, ale nic w podobnym stylu nie było. Oto opis mojego problemu: mam prosty systemik, w którym mam m. in. klasy DB (obsługa bazy danych, śle zapytania i przechowuje informacje o ewentualnych błędach) oraz Session (jak sama nazwa mówi - do obsługi sesji). W klasie Session w destruktorze wywołuję metodę, która kończy mi daną sesję, czyli przy pomocy klasy DB robi UPDATE danych w bazie. Działa, jednak...no właśnie. Gdybym w klasie DB miał destruktor, w którym kończyłbym połączenie z bazą danych, to to zapytanie już wygeneruje błąd, czyli tak jakbym był rozłączony. Dodam jeszcze, że później pobieram sobie pewną metodą informacje o zapytaniach (klasa DB) i brakuje tego ostatniego zapytania kończącego sesję (teraz oczywiście rozważam wersję bez zakończonego połączenia). Aha, jeszcze dodam (może to mieć jakiś związek - tak przypuszczam), że obiekty pobieram przy pomocy czegoś w stylu rejestru, tzw. ClassLoader'a. Załączę odnośniki do kodów klas. Na logikę i angielski proszę na razie nie zwracać uwagi - poprawki wprowadzam na bieżąco (IMG:style_emoticons/default/winksmiley.jpg) session.class.php db.class.php classloader.class.php |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Mylisz się. Połączenie jest zamykane w chwili jego wygaśnięcia, czyli wcale niekoniecznie po zakończeniu działania aplikacji. Timeout jest ustawiany w opcjach MySQL. Wygaśnięcia, to znaczy? Bo pierwsze słyszę o wygasaniu połączeń... Cytat Jednak nie znalazłem informacji jak to wygląda np. w mysqli czy PDO, być może jest tak jak mówisz. Oczywiście mówimy tutaj o połączeniach tymczasowych, a nie stałych, które to na pewno nie są zamykane wraz z końcem działania aplikacji. W sterownikach stricte obiektowych jest to realizowane właśnie w destruktorach. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 00:11 |