2012-10-30 16 views
8

Przy każdym ładowaniu strony uruchamiam session_start(), aby wznowić bieżącą sesję. Kiedy rozpoczyna się session.gc_maxlifetime? Po raz pierwszy wywoływana jest nazwa session_start() i ustawiony jest plik cookie sesji? A może timer uruchamia się ponownie co session_start()?Kiedy sesja.gc_maxlifetime zaczyna liczyć

Z session.gc_maxlifetime ustawiony na około 24 minut, kiedy w tej linii czasu powinno dane sesji są śmieci zbierane

1. 12:00:00 First page load, session_start(), session cookie created 
2. 12:10:00 page load, session_start() 
3. 12:26:00 page load, session_start() 
4. 12:55:00 page load, session_start() 

Jeśli timer rozpoczyna się w pierwszym widoku obciążenia session_start() następnie spodziewałbym byłoby śmieci zbierać na obciążenia 3 . Ale jeśli resetuje każdy session_start(), to nie byłoby zebrać aż obciążenia 4.

mam nadzieję, że to, że jest to ostatnie, bo wtedy mogę zrobić javascript Heartbeat co kilka minut, aby wywołać stronę, która biegnie session_start().

Jeśli jest to pierwsze, session.gc_maxlifetime zaczyna się od utworzenia pliku cookie sesji, muszę zniszczyć/odtworzyć lub zresetować_id, aby zresetować licznik?

+0

Czy używasz domyślnej procedury obsługi sesji lub innej? – wgcrouch

+0

czy to jest filozoficzne, czy jest problem, który próbujesz rozwiązać? –

+0

Domyślna sesja obsługi sesji –

Odpowiedz

2

Jest to od ostatniego wywołania session_start() OR/AND ostatniego ostatniego czasu, w którym zostało zapisane. Domyślam się, że to drugie, ponieważ to zmieniłoby "ostatni modyfikowany" znacznik czasu, którego używałby śmieciarz PHP do określenia, czy musi on zostać usunięty, czy nie. W takim przypadku rozpoczyna się od ostatniego skanu do końca, który używa funkcji session_start() lub bezpośrednio kończy się skryptem mid wywołując session_ write_ close().

P.S. To sprawi, że "bicie serca" będzie proste i przyjemne (w jednym wierszu): http://prototypejs.org/api/ajax/periodicalUpdater