it-swarm.com.de

Warum bereinigt Debian PHP-Sitzungen mit einem Cron-Job, anstatt den in PHP integrierten Garbage Collector zu verwenden?

Debian und Derivate (Ubuntu) verwenden den PHP-Session-Garbage-Collector nicht

session.gc_probability = 0

stattdessen verwenden sie ein cron /etc/cron.d/php5

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

Warum hat sich Debian dafür entschieden?

28
nulll

Weil Debian sehr strenge Berechtigungen für /var/lib/php5 (1733, Eigentümerstamm, Gruppenstamm), um zu verhindern, dass PHP Sitzungsentführung. Leider verhindert dies auch, dass der native PHP Sitzungsmüllsammler) funktioniert, weil Dort können die Sitzungsdateien nicht angezeigt werden. Der Cron-Job wird als Root ausgeführt, der über ausreichenden Zugriff verfügt, um die Sitzungsdateien anzuzeigen und zu bereinigen.

Bearbeiten : Unterstützende Dokumentation: Das Verhalten wurde als Reaktion auf Fehler # 26772 festgestellt. (Früher gab es Kommentare im Bestand php.ini Datei darüber, aber ich sehe sie dort jetzt nicht in meiner keuchenden PHP install.)

32
asciiphil

Es ist wahrscheinlich ein bisschen zuverlässiger auf Websites mit wenig Verkehr (wenn Sie nur ein paar hundert Treffer pro Tag erhalten und GC nur etwa alle tausend Treffer abfeuert, bleiben die Sitzungen möglicherweise viel länger als sie sollten), und ich stelle mir vor, dass dies eine sein könnte etwas weniger hart auf dem Server als der native GC, wenn Sie viele Sitzungen haben.

5
ceejayoz