Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 14 Dołączył: 2.06.2010 Ostrzeżenie: (0%)
|
Stworzyłem stronę na której wykorzystuję sesje php SESSION. Lecz jak wiadomo, niektóre serwery nie przetrzymują za długo danych sesji mimo że ciasteczko nadal istnieje (przedłużone o kilka dni do przodu). Dlatego pomyślałem o stworzeniu własnego systemu sesji opartego na plikach.
Polegał by on na tym, że przy logowaniu tworzone byłoby ciasteczko z wygenerowanym ID. Po czym został by stworzony na serwerze w odpowiednim folderze plik o nazwie danego ID z nie którymi danymi użytkownika(plik w formie PHP). Gdy serwer znajdzie plik o danym ID z ciasteczka dołączyłby go do skryptu. W taki sposób nie byłbym ograniczony długością trwania sesji po stronie serwera, a zarazem nie musiałbym wywoływać kolejnego zapytania do bazy MySQL. Co myślicie o takim pomyśle sesji (jakieś za, a nawet przeciw są jak najbardziej wskazane (IMG:style_emoticons/default/biggrin.gif) ), czy może macie jakieś inne pomysły, bo aktualnie zastanawiam się jeszcze nad taką zmianą. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 25 Dołączył: 22.05.2011 Ostrzeżenie: (0%)
|
Tak działa system sesji wybudowany w PHP.
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 122 Dołączył: 17.07.2005 Skąd: P-na Ostrzeżenie: (0%)
|
Jak już chcesz sam robić własną obsługę sesji to akurat bym uciekał z plików na rzecz bazy/memcache/redis
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 79 Dołączył: 25.05.2010 Ostrzeżenie: (0%)
|
Nie trzeba kombinować z ciasteczkami, PHP ma mechanizmy umożliwiające własną implementację sesji - session_set_save_handler(). Nie trzeba bać się bazy danych, zamiast plików użyłbym właśnie jej.
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%)
|
http://www.php.net/manual/en/session.configuration.php <- zainteresuj się szczególnie gc_maxlifetime, gc_divisor, gc_probability i jak zrozumiesz na jakiej zasadzie działa garbage collection w php, to będziesz mógł zwiększyć czas żywotności takiego pliku.
EDIT: na szybko nawet taki temat już istnieje: http://forum.php.pl/index.php?showtopic=183188 od 3 lat. Ten post edytował by_ikar 16.06.2014, 21:09:28 |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 14 Dołączył: 2.06.2010 Ostrzeżenie: (0%)
|
Wszyscy polecają bazę danych, a ja chcę ograniczyć trochę ilość danych w bazie oraz by działało to dość szybko (w końcu zapytanie do bazy też chwilę zajmuje).
Zmiany w gc_maxlifetime, gc_divisor, gc_probability też raczej nie są mi na rękę. Czytając, niektóre tematy (nawet na tym forum) widać, że nawet te zmiany nie zawsze pomagają. Bo to też wszystko zależy od serwera (dostępu do pliku php.ini oczywiście nie mam). Dlatego pomyślałem nad własnym dość prostym systemie. Bo większych zmian bym nie miał (zmiana zmiennych SESSION na tablicę zapisaną w pliku, a zamiast session_start (sprawdzenie czy dany plik istnieje i w razie czego go dołączyć)). |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 122 Dołączył: 17.07.2005 Skąd: P-na Ostrzeżenie: (0%)
|
no to użyj memcache/redis jeśli masz taką możliwość
myślisz że dostęp do pliku będzie szybszy? a połączone z bazą i tak masz pewnie inicjowane na stronie zawsze, więc jedno zapytanie więcej mu nie zaszkodzi |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%)
|
Jak nie masz takich możliwości na serwerze, to jest to jakieś wyjście. Ale czy jest sens się bawić w coś takiego? Gdzie na każdym normalnym serwerze, możesz to sobie prosto konfigurować. Dla mnie sztuka dla sztuki, ale poza tym przeciwwskazań nie widzę.
|
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%)
|
Jeżeli koniecznie chcesz przedłużyć życie sesji, a ustawienia sesji nie sprostają wymaganiom projektu, to regeneruj taką sesje. Nie wiem czemu niektórzy na siłę chcą pisać swoją obsługę sesji na plikach, pomimo że ta wbudowana w php jest całkiem przyjemna.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 19:59 |