Назад | Перейти на главную страницу

Тайм-аут сеанса PHP

У меня проблемы с тайм-аутом сеанса в приложении PHP, я подозреваю, что тайм-аут задается кодом, но я предпочитаю сначала проверить инфраструктуру. Приложение, которое я запускаю, представляет собой чистый PHP 5.6 на Apache за классическим LB в AWS. Разработчики сказали мне, что они не манипулируют cookie сеанса в коде, поэтому я проверил свой файл apache2 / php.ini. Это тот:

[Session]
session.save_handler = files

session.use_strict_mode = 0

session.use_cookies = 1

session.cookie_secure = On

session.use_only_cookies = 1

session.name = PHPSESSID

session.auto_start = 0

session.cookie_lifetime = 0

session.cookie_path = /

session.cookie_domain =

session.cookie_httponly = 1

session.serialize_handler = php

session.gc_probability = 0

session.gc_divisor = 1000

session.gc_maxlifetime = 2400

session.referer_check =

session.cache_limiter = nocache

session.cache_expire = 180

session.use_trans_sid = 0

session.hash_function = 0

session.hash_bits_per_character = 5

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

На всякий случай это основной раздел [PHP]:

[PHP]
engine = On

short_open_tag = On

asp_tags = Off

precision = 14

output_buffering = 4096

zlib.output_compression = Off

implicit_flush = Off

unserialize_callback_func =

serialize_precision = 17

disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

disable_classes =

zend.enable_gc = On

expose_php = Off

max_execution_time = 30

max_input_time = 60

memory_limit = 128M

error_reporting = E_ALL

display_errors = On

display_startup_errors = Off

log_errors = On

log_errors_max_len = 1024

ignore_repeated_errors = Off

ignore_repeated_source = Off

report_memleaks = On

track_errors = Off

html_errors = On

variables_order = "GPCS"

request_order = "GP"

register_argc_argv = Off


auto_globals_jit = On

post_max_size = 800M

auto_prepend_file =

auto_append_file =

default_mimetype = "text/html"

default_charset = "UTF-8"


doc_root =

user_dir =

enable_dl = Off

file_uploads = On

upload_max_filesize = 750M

max_file_uploads = 20

allow_url_fopen = On

allow_url_include = Off

default_socket_timeout = 60

Насколько я понимаю, в инфраструктуре нет ничего, что могло бы вызвать тайм-аут. Я прав?

Я также проверил файлы cookie в своем браузере и получаю следующие параметры:

AWSELB PHPSESSID

Оба файла cookie имеют это в Expires / Max Age -> 1969-12-31T23: 59: 59.000Z

Надо ли еще что-нибудь проверить? Какие-нибудь подсказки?

Заранее спасибо..

Чтобы правильно обработать сеанс, посмотрите: http://php.net/manual/en/session.configuration.php

Там вы найдете эти переменные:

  1. session.gc_probability
  2. session.gc_divisor
  3. session.gc_maxlifetime

Попался! По-видимому, существует файл cron.d с именем php, который по сути представляет собой сценарий тире (/ bin / sh), который выполняется каждые 30 минут и очищает сеансы php, этот сценарий оценивает конфигурации apache2 и cli, поэтому, изменяя оба значения в GC максимальное время жизни, которое помогло.