Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Własny system sesji
Forum PHP.pl > Forum > PHP
radziopoke
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 biggrin.gif ), czy może macie jakieś inne pomysły, bo aktualnie zastanawiam się jeszcze nad taką zmianą.
404
Tak działa system sesji wybudowany w PHP.
johny_s
Jak już chcesz sam robić własną obsługę sesji to akurat bym uciekał z plików na rzecz bazy/memcache/redis
kartin
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.
by_ikar
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.
radziopoke
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ć)).
johny_s
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
Damonsson
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ę.
by_ikar
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.