Nasıl bir sunucu sona ermiş ve nasıl zaman aşımı süresi değiştirilebilir bir oturum yargıç mı?

2 Cevap php

Ben bir oturum çerezi (session.cookie_lifetime), bir ömür boyu verilmiş ve bu olabilir anlıyorum ki ömür boyu sonra çerez ne olursa olsun bir kullanıcı site ile etkileşim olsun sona eriyor.

Bu nedenle tarayıcı kapanana kadar onlar canlı kalmalı belirtmek için 0 bu set için varsayılabilir.

Ben de çöp toplama süresi (session.gc_maxlifetime) bir cookie için ayarlanabilir ve sürece bir kullanıcı tıklama arasındaki süreyi aşmamasını olarak daha sonra çerez etkin kalacağını anlıyorum düşünüyorum.

Bu test için ben bir 10 ikinci oturum zaman aşımı almak için çalışıyorum.

Denedim:

ini_set('session.gc_maxlifetime',10);

ama oturum en az 1 dakika sonra zaman aşımı değildir.

Ben sadece oturumu 10 saniye ömrü vardır çöpçüyle söylüyorum ama aslında çöp toplayıcı tetikleme değilim çünkü bu?

Nasıl bir oturum talep her zaman çöp toplayıcı gidiyor ya da sadece koşmak geliyor ayarlarım?

2 Cevap

Her şeyden önce, çerez ayarları (istemci tarafı olan) ve (sunucu tarafı) çöp toplama karıştırmayın. Çerez ayarları sadece session_id bitiminden etkiler. Tarayıcı çerezi kaldırıldı olsa bile oturum hala veri sunucu üzerinde bulunabilir ve session_id hala tarayıcı tarafından hatırlanır ise tersine, sunucu verileri kaldırabilirsiniz.

Eğer tarayıcı veya belirli bir tarih ve zamanda kapattığınızda çerez sona erecek olabilir (ben varsayılan seçenek ilki olduğuna inanıyorum, ama bunu kontrol etmek olurdu). Kullanıcı site ile etkileşim halinde her cevaba yenilenen beri her iki durumda da, çerez geçerli kalacaktır.

Oturum veri çöp toplama başlatıldığında kaldırılır ama dikkate almak gerekir:

  1. Çöp toplama, rastgele açtığı bir sayfa isteği ile tetiklenir.

  2. Daha o gc_maxlifetime saniye içinde değiştirilmemiş oturum verileri kaldırır.

  3. Varsayılan olarak, oturum veri dosyalarında saklanır ve PHP dosyaları ne sahibi ne sitesi takip etmez. Kısa süre için oturum verilerini tutmak için yapılandırılmış sitesi uzun süre diğer sitelerden verileri kaldırmak için muhtemeldir: Bu varsayılan paylaşılan konumda oturumları saklayarak oturumu sona ermesi üzerine kontrolünü kaybetmek yapar demektir.

Eğer veri ömür boyu üzerinde tam denetim istiyorsanız Özetle, sen özel bir dizinde örneğin oturum verilerini saklamak gerekir:

session_save_path('/home/foo/sessions');
ini_set('session.gc_maxlifetime', 3*60*60); // 3 hours
ini_set('session.use_only_cookies', TRUE);
session_start();

Sunucu, bir komut dosyası içinde geçersiz değilse o ayarlanmış bir varsayılan zaman aşımı, INI dosyaları bulunuyor vardır. Apache yılında PHP.ini içinde ayarlanır inanıyorum. Ayrıca ben de php.ini içinde inanıyorum çöp toplama işlevini etkinleştirmeniz gerekir.