2015-08-21 5 views
4

У нас есть приложение PHP (SilverStripe) на сервере хостинга cPanel LAMP. Пользователь CMS теряет сессию каждые пару минут. Вот некоторые параметры сеанса, основанные на phpinfo() на хостинговой платформе:Время работы PHP через несколько минут

session.gc_maxlifetime = 0 
session.gc_divisor = 100 
session.gc_probability = 1 
session.save_handler = files 
session.save_path = /tmp 
session.cookie_lifetime = 0 

Там нет управления сеансом в коде PHP. На самом деле SilverStripe CMS на самом деле пингует сервер каждые 5 минут, чтобы поддерживать сеанс, но до этого времени тайм-ауты случаются.

Что может быть причиной этого?

ответ

0

Он не отображается в документации, но установка session.gc_maxlifetime в 0 означает, что сеанс не истечет, пока браузер не будет закрыт.

Конечно, это все еще не устраняет проблемы, связанные с сборщиком мусора, делающим свое дело. Лучшее решение для этой проблемы по-прежнему меняется. Session_path

1

Проверьте php.ini, значение, установленное для session.gc_maxlifetime, - это срок службы идентификатора в секундах.

Я считаю, что по умолчанию 1440 секунд (24 минут)

http://www.php.net/manual/en/session.configuration.php

Редактировать: Поскольку некоторые комментарии указывают, выше, не совсем точно. Замечательное объяснение того, почему и как реализовать продолжительность сеанса, можно найти здесь:

1

Внутренний чехол CPANEL-12629 открыт для устранения проблемы с/scripts/clean_user_php_sessions, где сеансы старше 24 минут всегда удаляются в системах под управлением EasyApache 3 (несмотря на настройку пользовательских значений session.gc_maxlifetime). Я обновляю этот поток с дополнительной информацией о статусе этого дела по мере его появления. В то же время, временный обходной путь, чтобы отредактировать файл:

Код:

/usr/local/cpanel/scripts/clean_user_php_sessions 
Within the file, change this entry: 

Код:

еще { мой $ = Cpanel каталоги :: PHPINI :: get_directives ([ ' session.save_path ',' session.max_lifetime '], 1,'/usr/local/lib '); clean_sessions ($ dirs -> {'session.save_path'} {'value'}, $ dirs -> {'sessions.max_lifetime'} {'value'}); }

возвращение 1;

To:

Код:

еще { мои $ = Cpanel директорий :: PHPINI :: get_directives ([ 'session.save_path', 'session.gc_maxlifetime'], 1, «/ USR/local/lib '); clean_sessions ($ dirs -> {'session.save_path'} {'value'}, $ dirs -> {'session.gc_maxlifetime '} {' value '}); }

возвращение 1;

Затем исключить этот файл из обновлений CPanel с помощью следующей команды:

Код:

echo '/usr/local/cpanel/scripts/clean_user_php_sessions' >> /etc/cpanelsync.exclude 

Не забудьте отредактировать «/etc/cpanelsync.exclude», чтобы удалить эту строку, как только мы толкнули чтобы обновить эту проблему.

https://forums.cpanel.net/threads/php-session-timeout-since-64-0-update.598247/