Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ilość danych w sesji
Jazi
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 25.08.2009
Skąd: Toruń / Bydgoszcz

Ostrzeżenie: (10%)
X----


Witam,
Chciałbym spytać jak dużą ilość danych można przechowywać w zmiennej $_SESSION i czy optymalne jest, kiedy znajduje się w niej dość dużo różnych informacji. Np. chciałbym przechowywać w sesji tablicę osiągnięć użytkownika (czyli tablica ta może składać się od 5 do nawet 100 rekordów numerycznych).
Z góry dziękuję za odpowiedź.
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Sesja i tak jest przechowywana w pliku więc nie robi ile sobie tych danych będzie. 100 wartości to nie jest dużo tak więc nie przejmuj się tym.


--------------------
Go to the top of the page
+Quote Post
Jazi
post
Post #3





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 25.08.2009
Skąd: Toruń / Bydgoszcz

Ostrzeżenie: (10%)
X----


Czyli sesja jedynie pochłania pojemność mojego serwera? Nie będzie to przedłużało długości ładowania się mojej strony www?
Chciałbym te dane przechowywać w sesji, aby nie łączyć się z bazą danych za każdym razem, kiedy użytkownik się zaloguje / odwiedzi stronę (w zależności od odświeżenia).
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Różnicy czasu ładowania w ogóle nie odczujesz. To są mikrosekundy a i tak przechowanie tych danych w sesji będzie szybsze niż w bazie danych.


--------------------
Go to the top of the page
+Quote Post
smentek
post
Post #5





Grupa: Zarejestrowani
Postów: 130
Pomógł: 11
Dołączył: 7.04.2003

Ostrzeżenie: (10%)
X----


Dwa fakty:

1. Pomiędzy klientem (przeglądarką) a serwerem wędruje jedynie identyfikator sesji.
2. Sesja jest przechowywana po stronie serwera w pliku dzięki czemu dostęp do niej będzie szybszy niż odpytanie bazy danych.

Wniosek: Możemy ładować do sesji dużo danych bez negatywnych konsekwencji.

Błąd!

Inne fakty:
1. Operacje na plikach także posiadają swój koszt.
2. Sesja w PHP charakteryzuje się architekturą „share nothing”. Nie jest w stanie przetrwać żądania. Wszelkie zasoby czyli zaalokowane obszary pamięci ustanowione przez PHP istnieją jedynie na czas pojedynczego żądania. Na końcu żądania zaalokowana pamięć jest czyszczona, także wszelkie połączenia są przerywane.

Wniosek: Wraz z wzrostem rozmiaru sesji serwer realnie zwalnia. Sesja nie powinna przekraczać 10kb. 100kb. to wielkość dla "amatorskich" systemów z mniejszym natężeniem ruchu.

Jeżeli będziesz swoje 100 rekordow wyciagał z bazy tylko tam gdzie beda one realnie potrzebne to bedzie to relatywnie lekka operacja. Jeżeli będzisz trzymal je w sesji to po stronie serwera będą one pobierane i niszczone przy KAŻDYM request a nie tylko na tych stronach na których są faktycznie potrzebne.


--------------------
.:SMENTEK:.
Go to the top of the page
+Quote Post
Jazi
post
Post #6





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 25.08.2009
Skąd: Toruń / Bydgoszcz

Ostrzeżenie: (10%)
X----


Co znaczy "przy KAŻDYM request" ?
Go to the top of the page
+Quote Post
smentek
post
Post #7





Grupa: Zarejestrowani
Postów: 130
Pomógł: 11
Dołączył: 7.04.2003

Ostrzeżenie: (10%)
X----


"A ja myślałem, że sesja trwa do czasu zamknięcia przeglądarki,a tu tylko do requesta"

A z kąd serwer miał by wiedzieć o tym że zamknięto przeglądarkę? smile.gif

Mówimy o obsłudze sesji po stronie serwera. Serwer dostaje od klienta identyfikator i tworzy kopie danych sesji na podstawie tego identyfikatora. Ta kopia jest lub nie jest modyfikowana. Na koniec wszystko wędruje z powrotem do pliku. Przy każdym żądaniu jest to powtarzane. Duza sesja = więcej danych do przepisania.


--------------------
.:SMENTEK:.
Go to the top of the page
+Quote Post
Jazi
post
Post #8





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 25.08.2009
Skąd: Toruń / Bydgoszcz

Ostrzeżenie: (10%)
X----


A "żądanie" to odświeżenie strony, czy dodawanie / pobieranie danych ze zmiennej sesji?
Go to the top of the page
+Quote Post
smentek
post
Post #9





Grupa: Zarejestrowani
Postów: 130
Pomógł: 11
Dołączył: 7.04.2003

Ostrzeżenie: (10%)
X----


Cytat(Jazi @ 24.04.2011, 14:35:33 ) *
Co znaczy "przy KAŻDYM request" ?


Przy każdym pobraniu z serwera strony przez użytkownika, który zainicjalizował wcześniej sesję i teraz wysyła jej identyfikator. Request = żądanie obsługi poprzez HTTP.


--------------------
.:SMENTEK:.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 20:53