Custom PHP session timeout za virtual host

Spet sem naletel na zanimiv problemcek, ga uspesno resil, pa naj ga delim se z vami.

Zadeva z nastavitvijo posebnega timeouta za PHP session je naceloma enostavna, to lahko naredimo tako, da znotraj VirtualHost v httpd.conf (ali v .htaccess) vpisemo naslednje:

php_value session.gc_maxlifetime <timeout_in_seconds>

S tem smo sporocili PHPjevemu garbage collectorju, naj brise vse session datoteke, ki so starejse od <timeout_in_seconds> sekund. Ker pa PHP shranjuje vse session datoteke, ne glede na virtual host v isti direktorij in nima pojma, katera session datoteka pripada kateremu virtual hostu, izbrise pac vse, ki zadoscajo temu pogoju, kar povzorci, da ta nastavitev vpliva na session datoteke celega serverja, torej tudi virtual hostov, kjer mogoce zelimo daljsi timeout.

Resitev je seveda enostavna, ampak mogoce ne pade na pamet ravno ob prvem razmisljanju. Seveda, za virtual host, za katerega nastavljamo custom timeout, nastavimo se custom direktorij, kamor naj shranjuje session datoteke, takole:

php_value session.save_path /pot/do/direktorija/za/session/datoteke
php_value session.gc_maxlifetime <timeout_in_seconds>

Seveda moramo paziti, da v ta direktorij shranjuje session datoteke le zeljeni virtual host.

2 odgovora

tnx for shearing! =)

Uporabno... sem sprobal in glej ga hudiča... It works :)