Debian neden php'nın yerleşik çöp toplayıcısını kullanmak yerine php oturumlarını cron işi ile temizliyor?


26

Debian ve türevleri (Ubuntu) php çöp toplayıcı kullanmıyor

session.gc_probability = 0

bunun yerine cron /etc/cron.d/php5 kullanıyorlar

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete

Debian neden bunu yapmayı seçti?

Yanıtlar:


29

Çünkü Debian /var/lib/php5, PHP oturumunu ele geçirmeyi önlemek için çok katı izinler (1733, sahiplik kökü, grup kökü) ayarlar . Ne yazık ki, bu aynı zamanda yerel PHP oturumu çöp toplayıcısının çalışmasını da engelliyor, çünkü orada oturum dosyalarını göremiyor. Cron işi, oturum dosyalarını görmek ve temizlemek için yeterli erişime sahip kök olarak çalışır.

Düzenleme : Destekleyici belgeler: Davranış # 267720 numaralı hataya cevaben kuruldu . ( php.iniBu konuda hisse senedi dosyasında yorumlar vardı , ancak onları şimdi wheezy tabanlı PHP kurulumumda göremiyorum.)


/ Var / lib / php5 ar drwx-wx-wt (root-root) 'a izin verir, böylece apache kullanıcısı dir içeriğini yazabilir (yapışkan bit), ancak okuyamaz. Bu yüzden php'ın çöp toplayıcısının oturum dosyalarının zamanını değerlendiremediğini ve böylece hangi dosyaların silineceğini seçemediğini anlıyorum ... doğru mu?
null

Evet doğru.
asciiphil

5

Trafik yoğunluğu düşük olan sitelerde biraz daha güvenilir olması muhtemeldir (günde yalnızca birkaç yüz vuruş alırsanız ve GC yalnızca her bin saatte bir ateş ederse, oturumlar olması gerekenden daha uzun süre takılabilir) ve bunun bir Çok fazla oturumunuz varsa, sunucu üzerinde yerel GC'den biraz daha az sert.

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.