Mengapa session.cookie_lifetime disetel ke 23 hari? [Tutup]

9

Sejauh yang saya mengerti seumur hidup sesi di Drupal dibatasi oleh session.gc_maxlifetimepengaturan secara default diatur ke sekitar 2,3 hari.

Lalu apa gunanya session.cookie_lifetimediatur ke 23 hari?

Berikut ini cuplikan dari settings.php:

/**
 * 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);

Harap asumsikan bahwa saya telah menetapkan keduanya session.gc_probabilitydan session.gc_divisor ke 1 hanya untuk pertanyaan ini.

pengguna5858
sumber
Karena Anda tidak ingin cookie menghilang secara misterius? Anda ingin ada di sana sehingga sesi dapat dibatalkan dengan anggun? Apakah ini menyebabkan masalah aktual bagi Anda?
Mołot
Itu saja. Tapi bukankah ide yang lebih baik untuk membuat cookie berakhir pada katakanlah 40 jam dan sesi server pada 51 jam? Maksud saya cookie seumur hidup kurang dari waktu kedaluwarsa server.
user5858
Ini sebagian besar berdasarkan pendapat dan hanya penulis PHP yang benar-benar tahu. Oh, dan itu tergantung pada pengendali sesi yang Anda putuskan untuk digunakan. Tapi biasanya tidak, Anda tidak ingin sesi yang seharusnya aktif dan dapat digunakan selama X jam lagi tanpa ada yang menggunakannya karena cookie yang hilang. Buang-buang penyimpanan. Meninggalkan cookie lebih lama berarti hampir selalu ada seseorang yang dapat menggunakan data sesi yang disimpan di server, jadi tidak ada data sesi yang terbuang sia-sia.
Mołot

Jawaban:

16

ini_set ('session.gc_maxlifetime', 200000);

  1. Nilai ini untuk server.
  2. Ini adalah pengaturan untuk Session Garbage Collection.
  3. Jika kunjungan terakhir pengguna terjadi sebelum tahun 2000-an maka sesi ini memenuhi syarat untuk pengumpulan sampah.
  4. Karena ini adalah GC, nilai sesi dapat dibuang dan tidak wajib. Jika tindakan GC terjadi setelah sesi dibuat layak untuk GC, itu akan dihapus.
ini_set('session.cookie_lifetime', 2000000);
  1. Nilai ini untuk browser.

  2. Ini adalah waktu maksimum yang mutlak hingga browser dapat tetap mengaktifkan cookie ini.

  3. Nilai 0 di sini berarti langsung atau ketika browser ditutup.

Untuk menjawab pertanyaan Anda secara khusus.

  1. Jika pengguna tidak kembali ke server dalam 2,3 hari, sesi nya akan dihapus ketika pengumpulan sampah sesi berjalan.
  2. Jika dia terus menekan satu halaman di server setiap 2.2 (kurang dari 2.3 hari) maka sesi akan tetap aktif. Tapi itu bisa aktif hanya sampai 23 hari sejak sesi pertama kali dihasilkan.
  3. Jadi yang dimaksud adalah session.cookie_lifetimeseumur hidup maksimum absolut dari suatu sesi.
Gokul NK
sumber
1
Perhatikan pengumpul sampah probabilistik. Lebih detail: stackoverflow.com/a/1270960 .
digitgopher
Jawaban yang bagus, juga bisa dilakukan di php.ini jika Anda memiliki akses ke server Anda misalnya dalam /etc/php/5.6/fpm/php.inimenyesuaikan (atau menambah) pengaturan: session.gc_maxlifetime = 2000000. Terima kasih.
therobyouknow