В drupal есть дефолтовы настройки для времени жизни кукисов и рандомной чистки сессий. Хранятся они в файле settings.php.
1 2 3 |
ini_set('session.cookie_lifetime', 2000000); ini_set('session.gc_probability', 1); ini_set('session.gc_divisor', 100); |
Т.е. время жизни сессии устанавливается равным более 23 дней. Если сборка мусора работает верно, то можно уменьшить время жизни и успокоиться. Если же это не помогает (мусор не собирается), то сессионный мусор можно почистить, запрограммировав hook_cron.
Есть и готовый модуль — session_expire.
Но ставить целый модуль для добавления 20 строк в cron как то не хочется, возьмем только нужное из этого модуля. :)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/* О, могучий ХРОНОС! */ function mymodule_cron() { //какой то ваш код (вдруг уже что то есть) ... //сборка мусора из таблицы сессий //проверим, когда последний раз собирали мусор $last_run_time = variable_get(SESSION_EXPIRE_LAST, 0); //мы это выполняем раз в сутки (86400 сек) if (time() > $last_run_time + 86400) { //устанавливаем время последней зачистки variable_set(SESSION_EXPIRE_LAST, time()); //время жизни сессии пусть будет равно 7 дней $timestamp = time() - 86400 * 7; //собственно удаление, удаляем только сессии анонимов (uid = 0) db_query("DELETE FROM {sessions} WHERE timestamp < %d AND uid = 0", $timestamp); } } |
Даже и 20 строк не получилось, не смотря на обилие комментариев.