Session Handler - Zarządzanie zasobami sesji [kwiateek] |
Session Handler - Zarządzanie zasobami sesji [kwiateek] |
31.05.2004, 17:10:56
Post
#21
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 10.02.2004 Ostrzeżenie: (0%) |
komu dziala _gc? skad klasa "wie" jaki jest lifetime. nie brakuje moze linijiki [php:1:c3840c21d6]<?php
$this->session_lifetime = $session_lifetime; ?>[/php:1:c3840c21d6] ? |
|
|
31.05.2004, 20:17:21
Post
#22
|
|
Grupa: Zarejestrowani Postów: 223 Pomógł: 0 Dołączył: 13.01.2003 Skąd: 3rd ball of mud behind a big ball of burning gas Ostrzeżenie: (0%) |
Cytat komu dziala _gc? skad klasa "wie" jaki jest lifetime. nie brakuje moze linijiki [php:1:e7503a3196]<?php
$this->session_lifetime = $session_lifetime; ?>[/php:1:e7503a3196] ? Jak widać brakuje. Trzeba ją wrzucić do konstruktora. Niech ktoś z redakcji kto ma uprawnienia do artów to poprawki. Pozdrawiam. -------------------- It's Time to Join the PLD Linux Generation!
<? while (!$success) { $try++; } ?> |
|
|
31.05.2004, 20:35:47
Post
#23
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław |
poprawione
-------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
31.05.2004, 22:10:59
Post
#24
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 10.02.2004 Ostrzeżenie: (0%) |
_gc dziala po zmianie:
bez tej zmiany silnik bazy danych byl odpytywany zapytaniem ktore zawsze zwracalo false. time() - $session_lifetime dawalo w wyniku -$session_lifetime. pozdrawiam |
|
|
21.08.2004, 22:06:16
Post
#25
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 7.10.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
Dzięki wielkie za ten artykuł! Jest super.
Ale... jak w poście powyżej - _gc trzeba lekko zmodyfikować aby działało a mimo że Hup pisał o tym już w maju (a jest teraz sierpień!!!) nikt tego nie poprawił Pozdrawiam Bartek |
|
|
22.08.2004, 07:15:25
Post
#26
|
|
Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin |
Cytat(Bartosław @ 2004-08-21 22:06:16) Dzięki wielkie za ten artykuł! Jest super. Ale... jak w poście powyżej - _gc trzeba lekko zmodyfikować aby działało a mimo że Hup pisał o tym już w maju (a jest teraz sierpień!!!) nikt tego nie poprawił Pozdrawiam Bartek nie pytaj sie co my mozemy zrobic dla Ciebie lecz co Ty mozesz zrobic dla nas a w tym dla innych jezeli czegos oczekujesz zadaj sobie pytanie - a moze sam to zrobie? to nic strasznego .... wystarczy napisac i wyslac -------------------- brak sygnaturki rowniez jest sygnaturką
|
|
|
23.08.2004, 19:24:16
Post
#27
|
|
Grupa: Zarejestrowani Postów: 223 Pomógł: 0 Dołączył: 13.01.2003 Skąd: 3rd ball of mud behind a big ball of burning gas Ostrzeżenie: (0%) |
Cytat(Bartosław @ 2004-08-21 23:06:16) Dzięki wielkie za ten artykuł! Jest super. Ale... jak w poście powyżej - _gc trzeba lekko zmodyfikować aby działało a mimo że Hup pisał o tym już w maju (a jest teraz sierpień!!!) nikt tego nie poprawił Pozdrawiam Bartek hup podał rozwiązanie - czytaj uważnie archiwalne posty. Jakoże nie mam dostepu do panelu administracyjnego nie jestem w stanie dokonać tej poprawki. Pozdrawiam. -------------------- It's Time to Join the PLD Linux Generation!
<? while (!$success) { $try++; } ?> |
|
|
22.12.2004, 19:41:54
Post
#28
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) |
Witam wszystkich
Wczoraj naszło mnie żeby przepisać klasę kwiatka do PHP5 z kilkoma modyfikacjami(np. uzycie adodb do połączenia z bazą). Wszystko szło jak należy do momentu kiedy miałem użyć tego co stworzyłem. Zastosowanie klasy nie przynosi rezultatów. Sesje nie są zapisywane - jedyne co mi wywala php, to taki warning: Kod Warning: Unknown: Your script possibly relies on a session side-effect which existed until php 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0 Pierwszy raz widzę coś takiego - ktoś ma pomysł co może powodować takie ostrzeżenie? Oto kod klasy handlera:
a to sposób użycia:
Dodam, że w bazie danych też nie ma żadnych rekordów. Co o tym myślicie - z góry dzięki za wskazówki. pozdrawiam anas |
|
|
9.03.2005, 12:56:38
Post
#29
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 18.01.2004 Skąd: Ostrów Wlkp. Ostrzeżenie: (0%) |
U mnie pojawił się taki problem. Nie wiem czy nie mieszam, bo wydaje mi się to dziwne no ale tak jest.
Mianowicie przy kazdym wywołaniu session_start() najpierw wywoływana jest metoda _write, która zapisuje nową datę do bazy, a dopiero później sprawdzane jest czy sesja się nie przedawniła metodą _gc. Przez to najpierw nadpisywana jest nowa data, wiec sesja nigdy sie nie przedawnia. Gdy we _write zanim zostanie zupdatowany rekord w baze dodałem wywołanie _close, która wywołuje _gc to wszystko wydaje się działać dobrze. Czy to jest normalne Czy to może wina serwera, że najpierw updatuje, a poźniej sprawdza dopiero czy powinien ps korzystam z wersji z artukułu, nie tej dostosowanej do php5 EDIT: a jeszcze lepiej gdy dodałem wywołanie _gc w metodzie _read, wtedy sprawdza czy sesja nie jest przedawniona zanim jeszcze cokolwiek z niej wczyta. Ale czy tak nie powinno być normalnie ? Ten post edytował Mery 9.03.2005, 17:32:22 |
|
|
10.03.2005, 01:05:59
Post
#30
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 5 Dołączył: 6.02.2004 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Cytat bool gc ( int session_lifetime ); Funkcja ta jest odpowiedzialna za usuwanie już nieużywanych zasobów (w slangu nazywamy to: garbage collection). Do nieużywanych zasobów zaliczają się stare, nieaktywne sesje. Ta funkcja wywoływana jest przez funkcję close. Maksymalny czas trwania sesji przekazywany w postaci parametru tej funkcji definiuje po jakim czasie sesje mają być uznane za nieaktywne i czyszczone przez tą funkcję. Odpowiednikiem tego parametru w pliku konfiguracyjnym php.ini jest wpis: session.gc_probability. Czy w ostatnim zdaniu nie chodziło o "session.gc_maxlifetime" ? session.gc_probability wpływa na prawdopodobieństwo wykonywania funkcji gc. -------------------- |
|
|
6.05.2005, 03:52:08
Post
#31
|
|
Grupa: Zarejestrowani Postów: 154 Pomógł: 0 Dołączył: 17.12.2003 Skąd: Olsztyn Ostrzeżenie: (0%) |
Witam
Zostałem odesłany do tego skryptu, więc go wkleiłem.. no i nici... po jakieś godzinie (jak nie więcej) 1) Po pierwsze (poruszone w temacie)
oraz
2) Po drugie Za cholerę nie chciało mi się zalogować do bazy sql, kombinowałem, normalnie zrobiłem ręczne debuggowanie i doszłem do wniosku że trzeba w klasie zrobić coś takiego
potem w funkcji Connection
a nastepnie kazde mysql_query($sql_query) zmienic na
no i skrypt ruszył... potem namęczyłem bo coś mi ze starych $_SESSION nie chciało łapać.. no ale koniec końców jakoś sie udało... Niby niewielkie zmiany ale znaim do nich doszlem to myślałem że wybuchne... mam wrażenie, że kod był pisany na sucho, bez testów.. co nie zmienia faktów, że działa i, że się napewno przyda... pozdrawiam Ten post edytował Fallout 6.05.2005, 03:53:18 -------------------- |
|
|
9.07.2005, 23:47:05
Post
#32
|
|
Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) |
witam
dziekuje Kwiatkowi za udostepnie tej klasy mam kilka pytan odnosnie session handler czy zawsze lepiej stosowac session handler w mysql czy tylko wtedy gdy chce zliczac userow obecnie przebywajacyh na stronie, w konkretnym dziale itd. czy ten session handler dziala w taki sposob ze user zamyka przegladarke, a nastepnie znowu wlacza i wchodzi na ta sama strone i znowu jest zalogowany? dlaczego jak w jednym oknie przegladarki jestem zalogowany, otwieram drugie okno przegladarki i tez jestem zalogowany? czy to wina mojego skryptu czy tak ma dzialac session handler na mysql i to jest wlasnie ten czas zycia sesji? do zliczania klikniec, wejsc na strone, itp, lepiej stosowac session handler czy mozna zwykle sesje w plikach? bo obawiam sie ze nie bede mogl zmieniec tego wpisu odnosnie session_handler na serwerze. dziekuje za cierpliwosc, wyrozumialosc i dobre odpowiedzi dobranoc -------------------- aplikacje internetowe | Symfony
|
|
|
13.09.2007, 10:22:44
Post
#33
|
|
Grupa: Zarejestrowani Postów: 346 Pomógł: 23 Dołączył: 28.11.2004 Ostrzeżenie: (0%) |
Widze, ze dosc ciekawa rozmowa byla tutaj prowadzona, lecz raptownie zakonczona, dlatego tez pozwole sobie odgrzac ten tamet, gdyz wydaje mi sie bardzo interesujacy, a pisac kolejnych nie ma sensu.
Po pierwsze sprawa braku usuwania sesji w bazie: U mnie pojawił się taki problem. Nie wiem czy nie mieszam, bo wydaje mi się to dziwne no ale tak jest. Mianowicie przy kazdym wywołaniu session_start() najpierw wywoływana jest metoda _write, która zapisuje nową datę do bazy, a dopiero później sprawdzane jest czy sesja się nie przedawniła metodą _gc. Przez to najpierw nadpisywana jest nowa data, wiec sesja nigdy sie nie przedawnia. Gdy we _write zanim zostanie zupdatowany rekord w baze dodałem wywołanie _close, która wywołuje _gc to wszystko wydaje się działać dobrze. Czy to jest normalne Czy to może wina serwera, że najpierw updatuje, a poźniej sprawdza dopiero czy powinien ps korzystam z wersji z artukułu, nie tej dostosowanej do php5 EDIT: a jeszcze lepiej gdy dodałem wywołanie _gc w metodzie _read, wtedy sprawdza czy sesja nie jest przedawniona zanim jeszcze cokolwiek z niej wczyta. Ale czy tak nie powinno być normalnie ? i to jest prawda, w takiej sytuacji u mnie nigdy nie dochodzilo do sytuacji by sesja z bazy zostala usunieta. Dodalem _gc do mtody _read przez co zaczelo usuwac sesje z bazy. Mysle, ze nie tylko mi sie przydaly odpowiedzi na pytania poruszone przez autora poprzedniego posta: czy zawsze lepiej stosowac session handler w mysql czy tylko wtedy gdy chce zliczac userow obecnie przebywajacyh na stronie, w konkretnym dziale itd. czy ten session handler dziala w taki sposob ze user zamyka przegladarke, a nastepnie znowu wlacza i wchodzi na ta sama strone i znowu jest zalogowany? dlaczego jak w jednym oknie przegladarki jestem zalogowany, otwieram drugie okno przegladarki i tez jestem zalogowany? czy to wina mojego skryptu czy tak ma dzialac session handler na mysql i to jest wlasnie ten czas zycia sesji? do zliczania klikniec, wejsc na strone, itp, lepiej stosowac session handler czy mozna zwykle sesje w plikach? Teraz moje problemy. Zaladowanie klasy i zastapienie podstawowych metod dla session, kodem:
Powinno odbyc sie tylko raz, na poczatku? U mnie przy zamieszczeniu tego na kazdej stronie pokazuje komunikac dotyczacy, ze nie moge powtornie zdeklarowac klasy. Kolejne pytanie. Po usunieciu sesji z bazy dostaje nowa o takim samy id przy wlaczonej opcji cookie, tak ma byc? Z gory dziekuje za wskazowki, ktore z pewnoscia nie tylko mi pomoga. Pozdrawiam. Edit Daje szybka przerobke pod PHP5 i mysqli.
Ten post edytował no_face 13.09.2007, 10:29:12 |
|
|
20.03.2008, 12:05:20
Post
#34
|
|
Grupa: Moderatorzy Postów: 36 519 Pomógł: 6308 Dołączył: 27.12.2004 |
zeby tobie bana na manuala dali to mi sie wierzyc nie chce...
http://dev.mysql.com/doc/refman/5.0/en/use.html http://dev.mysql.com/doc/refman/5.0/en/grant.html pomine juz ten szczegol ze autor podal po polsku co robia komendy ktore napisal edit: widze ze post sie zmyl -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
18.07.2008, 08:38:38
Post
#35
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 77 Dołączył: 5.08.2006 Ostrzeżenie: (0%) |
mam problem z tym session handlerem. Przerobiłem sobie ten skrypt pod php5. Problem polega na tym, że nie mogę nawiązac połączenia. Mam klasę do obsługi połączenia
objekt tej klasy przekazuję innym klasą np. do obsługi newsów czy zbanowanych w sposób
lub czasami rozszerzam przez extends. Ale to są przykłady. chodzi mi o to że, w żaden sposób nie mogę nawiązać połączenia, tak mi się wydaje, w klasie session. Czyli jeżeli zrobię tak:
to pojawiają się błędy: 1. dla przykładu 1 to Warning: mysql_query(): 6 is not a valid MySQL-Link resource in ... (w pliku klasy mysql) Warning: mysql_affected_rows() [function.mysql-affected-rows]: A link to the server could not be established in .. (plik klasy mysql) 2. dla przykładu 2 to Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sen Warning: mysql_affected_rows() [function.mysql-affected-rows]: A link to the server could not be established in ... Dodam, iż klasa mysql jest poprawna, korzystam z niej od dawna. Problem jest z tymi sesjami. Błędów skrypcie nie mam. raportowanie włączone. Co ciekawe, jeżeli rozpiszę sobie tą klasę na zwykłe funkcje, napiszę jeszcze jedną funkcję do łączenia się connect(), taką banalną samo wywołanie połączenia i wybór bazy, i potem w każdej z tych funkcji do obslugi sessji przed zapytaniem wywołam connect() to wszystko ładnie chodzi. Nie mam pojęcia co jest. Nie wiem czy jest sens wrzucać tu moje kody (klasa identyczna tylko ze pod php5 jak tu zaprezentowana niżej). Wydaje mi się, że sessja nie potrafi korzystać z obiektu połączenia, a obiekt połącznia normalnie działa, gdyż wcześniej pobiera mi ustawienia główne. Nierobiłem jeszcze opcji, że w klasie do obsługi sessji stworzyć funkcję nawiązującą połączenie i z niej korzystać, ale wydaje mi się ze bez tego powinno to działać. Ma ktoś jakieś pomysły ? Bardzo mi zależy bo męcze sie z tym już kilka dni. (jeżeli jest potrzeba to wkleje kody) -------------------- awake
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.09.2024 - 14:27 |