![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Jak dużą objętościowo zmienną można przechować w sesji?
Chodzi mi o to, czy mogę zserializować obiekt i między stronami przepychać go via sesje? Obiekt może parę czy paręset kB mieć więc przyjmijmy, że będzie miał 1MB - da się toto bez problemu przechować w sesji? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 4 Dołączył: 11.08.2010 Skąd: Inowrocław Ostrzeżenie: (10%) ![]() ![]() |
Jak dużą objętościowo zmienną można przechować w sesji? Chodzi mi o to, czy mogę zserializować obiekt i między stronami przepychać go via sesje? Obiekt może parę czy paręset kB mieć więc przyjmijmy, że będzie miał 1MB - da się toto bez problemu przechować w sesji? Nie... Sesje służą do przechowywania małych skrutowych informacji. Powiedz mi co za rodzaj danych tam przechowujesz... Jakiś plik? Łatwiej dane przenieść do pliku tekstowego lub do bazy z odpowiednimi parametrami gdzie parametry znowu zapisać do sesji. Zależy do czego wykorzystywany jest ten obiekt. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 306 Pomógł: 42 Dołączył: 25.03.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Obiekt można przecież serializować do pliku i w sesji umieścić tylko adres tego pliku np.
Chociaż w Javie z tego co wiem to przetrzymuje się w sesji miliard rzeczy, które mogą zajmować nawet ponad 3 MB i nie ma z tym najmniejszego problemu. http://stackoverflow.com/questions/4649907...f-a-php-session -------------------- Strony WWW: http://arscreo.pl
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Sesje przechowują dane w plikach.
Nie ma żadnych przeszkód w tym aby ktoś przechowywał zserializowane obiekty w sesjach. Oczywiście pytanie czy nie spowoduje to komplikacji w działaniu aplikacji, a kod nie zamieni się w spaghetti którego modyfikacja będzie trudna. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 4 Dołączył: 11.08.2010 Skąd: Inowrocław Ostrzeżenie: (10%) ![]() ![]() |
Sesje przechowują dane w plikach. Nie ma żadnych przeszkód w tym aby ktoś przechowywał zserializowane obiekty w sesjach. Oczywiście pytanie czy nie spowoduje to komplikacji w działaniu aplikacji, a kod nie zamieni się w spaghetti którego modyfikacja będzie trudna. Absurd... Podejście dobre dla jednego góra kilkunastu użytkowników. Wyobraź sobie jak zmienna nie zostanie usunięta lub ktoś rozmyśli się po załadowaniu wszystkich danych i trzyma cały czas te dane w pamięci. Jak wejdzie 100 takich userów to może jeszcze i nie problem ale jak będzie ich z 1000 - 2000 to już masz 2gb pamięci w plecy... Do sesji nie wrzuca się żadnych dużych wartości. A jeżeli napisanie krótkiej funkcji obsługi pliku jest trudne dla Ciebie to lepiej nie zaczynaj pisać w PHP bo po co się męczyć... Takie operacje są nie ekonomiczne i nie profesjonalne. Napisanie do bazy zapytania wyciągającego odpowiedni plik lub dane z możliwością odwołania się nawet po roku do nich to jeden select który będzie uwarunkowany odpowiednimi parametrami określającymi go... A co do spaghetti... Hehe... Lepszego określenia nie widziałem ![]() Obiekt można przecież serializować do pliku i w sesji umieścić tylko adres tego pliku np. Chociaż w Javie z tego co wiem to przetrzymuje się w sesji miliard rzeczy, które mogą zajmować nawet ponad 3 MB i nie ma z tym najmniejszego problemu. http://stackoverflow.com/questions/4649907...f-a-php-session I jak wyżej. Nie ma sensu przeładowywać sessji. Lepiej napisać głupi skrypt do pliku i cała zabawa... przecież w bazie możesz trzymać te pliki. Po co zaśmiecać sesje. Jeżeli to jakaś aplikacja z logowaniem - podpisujesz go do odpowiedniego usera lub dodatkowo do jakiegoś działu Jeżeli nie - to po prostu przypisz do jakiś odpowiednich dat , kategorii, działów. Przecież to nie jest żadna super trudna operacja... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
To rozwiązanie dla Panelu administracyjnego, którego będą używały max 3 osoby jednocześnie
![]() Chciałem po prostu przyspieszyć i zminimalizować orkę po bazie danych (bo do niej akurat odwołują się skrypty strony www dostępne dla normalnych internautów) jak również nie odwoływać się do dysku. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 4 Dołączył: 11.08.2010 Skąd: Inowrocław Ostrzeżenie: (10%) ![]() ![]() |
To rozwiązanie dla Panelu administracyjnego, którego będą używały max 3 osoby jednocześnie ![]() Chciałem po prostu przyspieszyć i zminimalizować orkę po bazie danych (bo do niej akurat odwołują się skrypty strony www dostępne dla normalnych internautów) jak również nie odwoływać się do dysku. Sesje trzymane są na serwerze na dysku. Ale dla 3 osób to spokojnie rób tą serializację. Ale ja mam złe doświadczenie z ludźmi i sesjami gdzie przeładowali tak sesje że serwer miał dosyć ![]() ![]() Ale to był pojedynczy przypadek. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Sesje trzymane są na serwerze na dysku. Wiem - ale odczytywac z sesji zmienna (jedno odwolanie do pliku), zeby odczytac nazwe pliku i pobrac plik z dysku (drugie odwolanie do dysku) to de factyo 2 odwolania do dysku ![]() A pobranie zmiennej z sesji to jedno odwolanie Ale ja mam złe doświadczenie z ludźmi i sesjami gdzie przeładowali tak sesje że serwer miał dosyć ![]() ![]() Akurat w tym przypadku nie ma szansy na to - pojedyncza osoba może "obrabiać" na raz tylko 1 rzecz ![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Chciałem po prostu przyspieszyć i zminimalizować orkę po bazie danych Do takich rzeczy służy zazwyczaj cache a nie sesjaCytat to de factyo 2 odwolania do dysku Bez przesady. Już nie wierzę, że piszesz tak optymalny i super wydajny skrypt, że jedno odwołanie do dysku więcej robi ci niesamowitą różnicę. A już szczególnie przy pracy "aż 3 userów".
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
To po co wysuwasz argumenty, które z racji lenistwa i tak nie mają żadnego znaczenia?
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Wyobraź sobie jak zmienna nie zostanie usunięta lub ktoś rozmyśli się po załadowaniu wszystkich danych i trzyma cały czas te dane w pamięci. Znajomość działania serwera apache leży. Mi się jednak wydawało, że ustawia się czas życia sesji i właśnie od automatycznego usuwania on jest. Jak wejdzie 100 takich userów to może jeszcze i nie problem ale jak będzie ich z 1000 - 2000 to już masz 2gb pamięci w plecy... 2gb? Trzeba było dokładnie przeczytać temat, w dyskusji rzucił liczbą 3 użytkowników a nie 1000 czy 2000. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
To po co wysuwasz argumenty, które z racji lenistwa i tak nie mają żadnego znaczenia? ![]() A jak powiesz: "szklanka jest w połowie pełna" czy "szklanka jest w połowie pusta" ? ![]() Był szybki pomysł, szybka wątpliwość to i szybkie pytanie poszło na forum, no i przyszła szybka odpowiedź ![]() Odpowiedź na swoje pytanie uzyskałem, za co dziękuję odpowiadającym ![]() Znajomość działania serwera apache leży. Mi się jednak wydawało, że ustawia się czas życia sesji i właśnie od automatycznego usuwania on jest. Widziałem już drobną pomyłkę w konfiguracji, gdzie serwer nie czyścił plików sesji (dokładnie zapisywał w jednym miejscu a chciał kasować z innego ![]() 2gb? Trzeba było dokładnie przeczytać temat, w dyskusji rzucił liczbą 3 użytkowników a nie 1000 czy 2000. Prezi2907 pisał o 2K userów, w momencie gdy nie napisałem ile osób będzie tego używało. Ten post edytował skleps 14.12.2011, 19:08:44 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Widziałem już drobną pomyłkę w konfiguracji, gdzie serwer nie czyścił plików sesji (dokładnie zapisywał w jednym miejscu a chciał kasować z innego ![]() Co ma błąd w konfiguracji do tego co ja napisałem o braku wiedzy? Prezi2907 pisał o 2K userów, w momencie gdy nie napisałem ile osób będzie tego używało. Fakt, teraz zobaczyłem. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 31 Dołączył: 30.03.2009 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Macanie sesji:
Zmiana wartości $i lubdługości $x powoduje przerwanie skryptu. Przy w/w skrypt działa do końca. Dla $i=1900000 -> error. Czy to coś pokazuje? Nie badałem wielkości zmiennej sesyjnej. Lub to:
Jak $i zwiększymy o 0 to wywala skrypt , należy ustawić settimelimit i badać dalej. Ten post edytował celbarowicz 15.12.2011, 09:19:26 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 307 Pomógł: 37 Dołączył: 9.11.2010 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli ktoś twierdzi że wielkość sesji nie ma znaczenia to najprawdopodobniej nie zna zasady jej działania. Jak wydajnie może działać serwer robiąc serialize'a i unserialize'a na ważących kilkanaście MB plikach, przy każdym zapytaniu do serwera.
Ten post edytował Uriziel01 15.12.2011, 07:32:57 |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Zacznijmy od tego, że wszelkie pytania o "możliwości" sesji należy kierować w odniesieniu do konkretnej jej implementacji. Wcale nie jest powiedziane, że mamy tutaj do czynienia z domyślną, wbudowaną w PHP implementację.
Domyślny mechanizm musi każdorazowo korzystać z dysku, a operacje odczytu i zapisu na tym nośniku są stosunkowo powolne. W dodatku mowa tutaj o plikach tekstowych tekstowych, nie binarnych. Oczywiście nie będzie specjalnej różnicy pomiędzy 30 kilobajtowym plikiem, a 2 megabajtowym, ale im więcej porcji danych musisz zapisać czy odczytać tym bardziej to medium będzie dawało się we znaki. Z 1 megabajtowymi plikami nie powinno być najmniejszych problemów. Cytat Jak wejdzie 100 takich userów to może jeszcze i nie problem ale jak będzie ich z 1000 - 2000 to już masz 2gb pamięci w plec y... No i co w tym dziwnego, że 2000 użytkowników generuje 2 GiB tymczasowych danych? A przy takiej ilości odwiedzających, o ile nie zrypaliśmy konf. serwera, mamy niemal pewność, że wszystkie niepotrzebne dane zostaną usunięte w ciągu sekund.Cytat Do sesji nie wrzuca się żadnych dużych wartości. A jeżeli napisanie krótkiej funkcji obsługi pliku jest trudne dla Ciebie to lepiej nie zaczynaj pisać w PHP bo po co się męczyć... A co za różnica czy dane będą składowane w pliku sesji czy swoim własnym pliku?@nospor: Do takich rzeczy służy zazwyczaj cache a nie sesja A kto powiedział, że sesja nie może być wykorzystywana jako miejsce składowania danych? ![]() @Fifi209: A co do licha ma serwer Apache do czyszczenia danych zapisanych w przedawnionych sesjach? |
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat @nospor: Do takich rzeczy służy zazwyczaj cache a nie sesja A kto powiedział, że sesja nie może być wykorzystywana jako miejsce składowania danych? Bo widzisz Crozin, bo to wszystko zależy. Jeśli użytkownik, chce z tych danych korzystać tylko i wyłącznie w jakiejś określonej akcji a nie za każdym razem gdy wejdzie w aplikację bez różnicy na jaką akcję, no to sorki, ale bardziej optymalnym rozwiązaniem będzie cache, który będzie ładowany tylko i wyłącznie dla tej konkretnej akcji. Sesja jak wiesz będzie ładowana za każdym razem i naprawdę nie ma większego sensu ładować w niej ciągle i ciągle bardzo dużej liczby danych, jeśli z tych danych korzystamy raz na jakiś czas.Jeśli zaś te dane, są potrzebne przy każdym odpaleniu strony, niezależnie od akcji, to pal cie licho, może być i sesja ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze chwila a chyba zostanie ogłoszony tu dżihad, chyba muszę wyjaśnić, bo zaczyna się dyskusja o wyższości Świąt Bożego Narodzenia nad Wielkanocą .
Dane w sesji będą raptem na jednej stronie, która będzie przeładowywana. To będzie tak jakby zrobić "fakturę": User zakłada "dokument", następnie dodaje po jednej pozycji "towaru" i po każdym dodaniu towaru strona się przeładowywuje, żeby poprzeliczać "ceny" (wiem wiem, mogę ajaxa zaprząc). Jak uzna że jest gotowe to kliknie "generuj dokument" i w tym momencie dane trafią do bazy już na stałe, więc usunie się dane z sesji. W sumie to liczę że dane zajmą do 10kB, ale jak wiadomo jak trafi się zdolny user to przyjmuję na idiotę 1MB (ale nigdy nie powinno się to stać). |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.06.2025 - 23:59 |