Rumah >pembangunan bahagian belakang >masalah PHP >Empat cara untuk mengosongkan sesi secara automatik dalam php

Empat cara untuk mengosongkan sesi secara automatik dalam php

PHPz
PHPzasal
2023-04-10 09:35:261518semak imbas

PHP mengosongkan Sesi secara automatik

Sesi ialah mekanisme pengurusan keadaan sebelah pelayan yang biasa digunakan dalam pembangunan web. Mekanisme Sesi boleh menyimpan maklumat tentang pengguna di seluruh hierarki tapak web untuk digunakan semasa mereka menyemak imbas tapak web. Walaupun Sesi memberikan kemudahan dalam menjadikan tapak web lebih mudah digunakan dan lebih interaktif, jika Sesi tidak dibersihkan tepat pada masanya, ia akan menduduki memori pelayan. Oleh itu, adalah sangat munasabah untuk menjangkakan Sesi yang telah tamat tempoh akan dipadamkan melalui pembersihan automatik.

Dalam PHP, pembersihan Sesi automatik boleh dicapai melalui kaedah berikut.

  1. Konfigurasikan dalam php.ini

Dalam fail php.ini, anda boleh menetapkan pilihan session.gc_probability dan session.gc_divisor. Apabila gc_probability dibahagikan dengan gc_divisor sama dengan 0, mekanisme kutipan sampah Sesi akan dimulakan.

Contohnya:

session.gc_probability = 1
session.gc_divisor = 100

Ini bermakna mekanisme pengumpulan sampah Sesi akan dimulakan dengan kebarangkalian 1% . Nilai lalai untuk pilihan ini ialah 1, yang bermaksud bahawa setiap permintaan pengguna cuba untuk memulakan mekanisme pengumpulan sampah.

Untuk memulakan mekanisme kutipan sampah secara automatik pada masa yang sama, anda boleh menambah pilihan berikut:

session.gc_maxlifetime = 1440

Ini bermakna Sesi tidak melahu selama 1440 saat (iaitu 24 minit) Ia akan dipadamkan selepas akses.

  1. Tetapkan masa tamat tempoh apabila Sesi dibuat

Gunakan fungsi ini_set() untuk menetapkan masa tamat tempoh Sesi. Contohnya:

ini_set('session.gc_maxlifetime', 1440);
session_set_cookie_params(1440);

Dengan cara ini, Sesi akan tamat tempoh dan dipadamkan selepas 1440 saat (iaitu. 24 minit).

  1. Gunakan pemasa

Pemasa boleh mengosongkan Sesi yang telah tamat tempoh pada selang masa tetap. Anda boleh menggunakan fungsi setInterval() untuk mencipta pemasa, dan kemudian melakukan operasi pembersihan Sesi dalam pemasa.

Contohnya:

setInterval(function() {

$expire_time = time() - 1440;
$files = glob(session_save_path() . '/sess_*');
foreach ($files as $file) {
    if (file_exists($file)) {
        if (filemtime($file) < $expire_time) {
            unlink($file);
        }
    }
}

}, 600);

Di sini, pemasa akan menyala setiap 10 minit Lakukan pembersihan Sesi. Laluan fail Sesi diperoleh melalui fungsi session_save_path() Secara lalai, ia adalah /tmp.

Apabila menggunakan pemasa, anda juga perlu memberi perhatian kepada pemprosesan serentak, kerana pengguna lain mungkin mencipta Sesi baharu apabila pemasa melakukan operasi pembersihan.

  1. Kosongkan Sesi secara manual

Akhir sekali, jika kaedah di atas tidak dapat memenuhi keperluan anda, anda juga boleh mengosongkan Sesi secara manual. Sebagai contoh, apabila pengguna keluar, Sesi boleh dimusnahkan melalui fungsi session_destroy().

Contohnya:

session_start();
//Lakukan operasi keluar pengguna
session_destroy();

Pembersihan Sesi secara manual memerlukan pembangun untuk mengekalkannya sendiri. Lebih banyak masa dan usaha, tetapi juga menyediakan kawalan yang lebih terperinci.

Ringkasan

PHP secara automatik membersihkan sesi sambil meningkatkan prestasi tapak web, dan juga boleh menghalang sesi daripada menduduki terlalu banyak memori pelayan. Dengan mengkonfigurasi php.ini, masa tamat tempoh Sesi, pemasa dan pembersihan manual, pembangun boleh membersihkan Sesi dalam senario berbeza untuk meningkatkan kestabilan dan ketersediaan tapak web.

Atas ialah kandungan terperinci Empat cara untuk mengosongkan sesi secara automatik dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn