Soalan:
Bagaimana anda boleh menentukan tempoh sesi berdasarkan konfigurasi PHP berikut tetapan?
session.auto_start Off Off session.bug_compat_42 Off Off session.bug_compat_warn On On session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_httponly Off Off session.cookie_lifetime 0 0 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 1000 1000 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.hash_bits_per_character 5 5 session.hash_function 0 0 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path /var/lib/php/session /var/lib/php/session session.serialize_handler php php session.use_cookies On On session.use_only_cookies Off Off session.use_trans_sid 0 0
Jawapan:
Walaupun tetapan session.gc_maxlifetime menentukan jangka hayat maksimum data sesi sejak perubahan terakhirnya, pengendalian sesi PHP mempunyai beberapa kerumitan.
Khususnya, pengumpul sampah yang mengalih keluar data sesi tamat tempoh tidak dipanggil oleh setiap panggilan session_start. Sebaliknya, ia digunakan dengan kebarangkalian yang ditentukan oleh session.gc_probability (lalai: 1) dan session.gc_divisor (lalai: 100). Ini bermakna walaupun data sesi telah tamat secara teori, ia masih boleh digunakan untuk tempoh yang lebih lama.
Untuk mengurangkan isu ini dan memastikan tamat masa sesi yang boleh dipercayai, adalah disyorkan untuk melaksanakan mekanisme tamat masa sesi tersuai.
Atas ialah kandungan terperinci Bagaimanakah Pemungut Sampah Sesi PHP Mempengaruhi Jangka Hayat Sesi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!