2012-10-30 24 views
8

sayımını başlatır Her sayfa yüklemesinde geçerli oturuma devam etmek için session_start() çalıştırıyorum. session.gc_maxlifetime ne zaman başlıyor? İlk kez session_start() çağrıldı ve oturumun çerezi ayarlandı mı? Veya zamanlayıcı her session_start()'u yeniden başlatır mı? Bu zaman çizelgesinde oturum verileri çöpsession.gc_maxlifetime ne zaman

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() 

toplanan olmalıdır zamanlayıcı ilk sayfa yük session_start() üzerinde başlarsa session.gc_maxlifetime ile

sonra çöp yükü 3 toplayacak beklenebilir yaklaşık 24 dakikaya ayarlayın . Ama her session_start() sıfırlar, o zaman ben o zaman ben session_start() çalışan bir sayfa çağırmak için bir javascript kalp atışı her birkaç dakikada yapabileceği çünkü ikincisi He got umuyorum yük 4.

kadar almayacak.

Eğer eski ise, session.gc_maxlifetime oturum çerezinin oluşturulmasından itibaren saymaya başlar Sayımı sıfırlamak için yeniden imha/yeniden mı yoksa regenerate_id mi yapmam gerekiyor?

+0

Varsayılan oturum işleyicisini mi yoksa farklı birini mi kullanıyorsunuz? – wgcrouch

+0

bu felsefi mi yoksa çözmeye çalıştığınız bir sorun mu var? –

+0

Varsayılan oturum işleyicisi –

cevap

2

Son session_start() çağrısından OR/AND çağrısı son son kez yazılır. Benim tahminim, PHP çöp toplayıcısının silinmesi gerekip gerekmediğini belirlemek için kullanacağı "son değiştirilen" zaman damgasını değiştireceğinden beri ikinci olacaktı. Bu durumda, session_start() işlevini kullanan veya session_ write_ close() işlevini çağırarak ortadaki betikle açıkça bitiren son komut dosyasından saymaya başlar.

P.S. Bu "kalp atışı" güzel ve basit (bir satırda) yapar: http://prototypejs.org/api/ajax/periodicalUpdater

İlgili konular