![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam (IMG:style_emoticons/default/wink.gif)
Tworzę (na potrzeby projektu) trochę dziwny mechanizm trzymania sesji w bazie (wymagany przez load-balancing). Dziwny dlatego, że w niektórych kwestiach ma on działać trochę niestandardowo - ale nie o to chodzi (IMG:style_emoticons/default/smile.gif) Mechanizm trzymania samego identyfikatora sesji w bazie oraz działanie tego skryptu jest już sprawdzone - wszystko śmiga tak jak powinno. Nie potrzebuje z tym pomocy ale... Trapi mnie wiele pytań dotyczących sposobu przechowywania zmiennych sesyjnych w bazie, o ile z samymi identyfikatorami nie miałem problemu (pojedynczy rekord zajmuje zawsze tyle samo, odpowiedni mechanizm GC, sprawdzone wydajnościowo i jest ok) to ciągle zastanawiam się jak rozwiązać przechowywanie zmiennych w drugiej tabeli. Otóż można przyjąć różne silniki do tego celu - MyISAM (raczej odpada), InnoDB, Memory itd.. - każde ma swoje plusy i minusy, dodatkowo pojawia się pytanie czy serializować zmienne sesji przy wrzucaniu do bazy i deserializować przy odczycie - da to możliwość zapisywania w sesji obiektów i tablic. Bez tego wydajniejsze to będzie ale sesja ograniczy się do trzymania ciągów znaków i liczb. W przypadku MEMORY też jest problem gdyż trzeba założyć ile te dane będą zajmować (nie obsługuje typów o nieokreślonym rozmiarze)... no i właśnie... mam mętlik w głowie (IMG:style_emoticons/default/smile.gif) Pomożecie? Jak wy byście to zrobili (chodzi mi w zasadzie o sam koncept tabeli/bazy pod tą sesje)? Może spotkaliście się z jakimś wydajnym rozwiązaniem albo z jakimś bardzo niewydajnym i możecie coś polecić/odradzić (IMG:style_emoticons/default/wink.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Odchudzenie sesji to zawsze ważny aspekt. Serializacja zawsze będzie Ci potrzebna bo przecież nie będziesz ograniczać schematu tabeli (a zarazem strukturę sesji) do paru pól (to dopiero będzie niewydajne). Po prostu utwórz pole session_data typu "text". Odczyt, deserializacja i gotowe (IMG:style_emoticons/default/snitch.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 02:09 |