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