Миналия ден един приятел ми писа че имал проблем с Debian server-a си. По точно не му пазел сессиите повече от 30 минути независимо колко се настройва session.gc_maxlifetime. В общи линии проблема е че Debian са решили да пренапишат поведението на сесиите като вместо garbage collector-а се стартира един cron на всяка 9-та и 39-та минута който почиства старите сесии. Тои се намира в /etc/cron.d/php5
като цяло семпличък скрипт който стартира от своя страна /usr/lib/php5/maxlifetime и в него се намира променливата колко време да е живота на кукито който е 1440 секунди или 24 минути 😉 От тук нататък има 2 варианта или да се спре крон-а и по този начин се прекратява автоматичното чистене което може по късно да се пренастрой от php.ini или направо в самия скрипт да се промени продължителноста на живота на сесиите с променливата max. Аз лично предпочитам втория вариант. Доста по чист е като цяло но има и недостатък – ако се презапише файлът промените ни ще се изгубят което си е неприятен факт.
ps. Сега като се замисля вероятно ако се дефинира друго място където да се съхранява сеиината информация чрез самото php би трябвало да излезе извън обхвата на скрипта и по този начин да се използва пак по нормален сесията без да прекъсва грубо.
ini_set('session.gc_maxlifetime', 14400); ini_set('session.gc_probability', 1); ini_set('session.gc_divisor', 100); session_save_path(APP_PARENT_DIR . '/sessions');
А на нашия впс дали ще сработи туй чудо? И на споделения ми хостинг.
Всичко зависи от настройките на OS-a на, споделен хостинг би трябвало да имаш опция за настройка на php-ини че там свинщината е различна в зависимост с какво се управлява хостинг-а. За VPS-а трябва да се види как е настроено php-то. Като цяло това е за Debian пичовете