Session.cookie_lifetime neden 23 gün olarak ayarlandı? [kapalı]


9

Anladığım kadarıyla, Drupal'daki oturumun ömrü, session.gc_maxlifetimevarsayılan olarak yaklaşık 2.3 güne ayarlanarak sınırlıdır .

O zaman session.cookie_lifetime23 güne ayarlanmanın faydası nedir?

Snippet, settings.php'den:

/**
 * Set session lifetime (in seconds), i.e. the time from the user's last visit
 * to the active session may be deleted by the session garbage collector. When
 * a session is deleted, authenticated users are logged out, and the contents
 * of the user's $_SESSION variable is discarded.
 */
ini_set('session.gc_maxlifetime', 200000);

/**
 * Set session cookie lifetime (in seconds), i.e. the time from the session is
 * created to the cookie expires, i.e. when the browser is expected to discard
 * the cookie. The value 0 means "until the browser is closed".
 */
ini_set('session.cookie_lifetime', 2000000);

Lütfen bu soru için ikisini de session.gc_probabilityve session.gc_divisor1'e ayarladığımı varsayalım .


Çerezin gizemli bir şekilde yok olmasını istemediğiniz için mi? Oturumun incelikle geçersiz kılınabilmesi için orada olmasını mı istiyorsunuz? Bu sizin için gerçek bir soruna neden oluyor mu?
MOLOT

İşte o zaman. Ancak, çerezin süresinin 40 saatte ve sunucu oturumunun 51 saatte sona erdirilmesi daha iyi bir fikir olmaz mı? Yani çerez ömrünün sunucu süresinin dolmasından daha az olması.
user5858

Bu büyük ölçüde fikir tabanlıdır ve sadece PHP yazarları gerçekten söyleyebilir. Oh, ve kullanmaya karar verdiğiniz oturum işleyicisine bağlıdır. Ancak genellikle hayır, eksik çerez nedeniyle hiç kimse kullanmadan X saat boyunca aktif ve kullanılabilir olması gereken bir oturum istemezsiniz. Depolama kaybı. Çerezden daha uzun süre ayrılmak, sunucuda tutulan oturum verilerini kullanabilen neredeyse her zaman bir kişinin bulunduğu anlamına gelir;
MOLOT

Yanıtlar:


16

ini_set ('session.gc_maxlifetime', 200000);

  1. Bu değer sunucu içindir.
  2. Oturum Çöp Toplama için bir ayardır.
  3. Kullanıcılar son ziyareti 200000'lerden önce yaptıysa, bu oturum çöp toplama için uygundur.
  4. GC olduğu için oturum değeri atılabilir ve zorunlu olmayabilir. Oturum GC için uygun hale getirildikten sonra bir GC eylemi gerçekleşirse, silinir.
ini_set('session.cookie_lifetime', 2000000);
  1. Bu değer tarayıcı içindir.

  2. Bu, bir tarayıcının bu çerezi etkin tutabileceği maksimum süredir.

  3. Buradaki 0 ​​değeri hemen veya tarayıcı kapatıldığında anlamına gelir.

Özellikle sorunuzu cevaplamak için.

  1. Kullanıcı 2.3 gün içinde sunucuya geri dönmezse, oturum çöp toplama çalıştırıldığında oturumu silinir.
  2. Her 2.2 (2.3 günden az) sunucuda bir sayfa vurmaya devam ederse, oturumu etkin kalacaktır. Ancak, oturumun ilk oluşturulduğu andan itibaren sadece 23 güne kadar aktif olabilir.
  3. Yani bunun anlamı session.cookie_lifetimebir oturumun mutlak maksimum ömrüdür.

1
Olasılıksal çöp toplayıcısına dikkat edin. Daha fazla detay: stackoverflow.com/a/1270960 .
digitgopher

Eğer sunucu üzerinde bu erişime mesela içinde varsa Güzel cevap, aynı zamanda php.ini içinde yapılabilir /etc/php/5.6/fpm/php.iniayarlamak (veya ekleyin) ayarını: session.gc_maxlifetime = 2000000. Teşekkür ederim.
therobyouknow
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.