(PHP 7 >= 7.1.0, PHP 8)
session_gc — Oturum verisi çöpünü toplar
session_gc() oturum verisi çöpünü toplamak için kullanılır. PHP, öntanımlı olarak olasılık tabanlı oturum çöpçülüğü yapar.
Olasılığa dayalı çöpçülük bir dereceye kadar çalışır ancak birkaç sorunu vardır. 1) Düşük trafikli sitelerin oturum verileri tercih edilen süre içerisinde silinmeyebilir. 2) Yüksek trafikli sitelerin çöpleri çok sık toplanabilir. 3) Çöp toplama, kullanıcının isteği üzerine gerçekleştirilir ve kullanıcı çöp toplama sırasında gecikme yaşar.
Bu nedenle, çöp toplama işleminin düzenli aralıklarla (örneğin UNIX benzeri sistemlerde "cron" ile) yapılması önerilir. session.gc_probability yönergesine 0 atayarak olasılık tabanlı çöpçülük devre dışı bırakılmalıdır.
Bu işlevin bağımsız değişkeni yoktur.
session_gc() başarı durumunda silinen oturum verisi
miktarını, aksi takdirde false
döndürür
Eski kaydeteme işleyiciler silinen veri miktarını döndürmez, sadece başarı durumunu döndürür, bu durumda başarıyla silinen verinin miktarı daima 1 olur.
Örnek 1 - cron gibi bir görev yöneticisi ile session_gc() kullanımı
<?php
// Önemli: Bu betik http sunucusunun kullanıcı kimliğinde çalıştırılmalıdır.
// Oturum veri deposunu ilklendirmek için etkin oturum gerekir.
session_start();
// Çöpçüyü devreye sok
session_gc();
// session_gc() ile oluşturulmuş oturum kimliğini temizle
session_destroy();
?>
Örnek 2 - Kullanıcı erişimli betik ile session_gc() kullanımı
<?php
// Bilgi: session_gc() işlevinin görev yöneticisi betiği ile kullanılması
// önerilirse de aşağıdaki gibi de kullanılabilir.
// Son çöp toplama zamanının denetimi için
$gc_time = '/tmp/php_session_last_gc';
$gc_period = 1800;
session_start();
// Çöpçü sadece çöp toplama zamanı geldiğinde çalışsın.
// Her istekte session_gc() çağrısı kaynak israfı olur.
if (file_exists($gc_time)) {
if (filemtime($gc_time) < time() - $gc_period) {
session_gc();
touch($gc_time);
}
} else {
touch($gc_time);
}
?>