Я рвал на себе волосы, пытаясь выяснить, почему мои сеансы прекращаются/убиваются/уничтожаются через 30 минут. Что ж, похоже, что в системах на основе Debian работает специальный cron, который игнорирует все конфигурации php.ini и apache и убивает любой сеанс бездействия через 30 минут.
Cron-путь: /etc/cron.d/php5
Внутри крона:
# /etc/cron.d/php5: crontab fragment for php5
# This purges session files older than X, where X is defined in seconds
# as the largest value of session.gc_maxlifetime from all your php.ini
# files, or 24 minutes if not defined. See /usr/lib/php5/maxlifetime
# Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm
Я неплохо разбираюсь в конфигурации и настройке хостов, но я не системный администратор. Может ли кто-нибудь помочь мне переопределить/отредактировать/изменить/перенастроить это, чтобы я мог установить значение дольше? Я думаю, что 3 часа было бы неплохо, но я хотел бы понять изменения, поэтому, если кто-то выше хочет сделать время сеанса короче/длиннее, я подпишу, как настроить изменение.
Благодаря любой помощи в этом
РЕДАКТИРОВАТЬ: Добавление кода /usr/lib/php5/maxlifetime
#!/bin/sh -e
max=1440
for ini in /etc/php5/*/php.ini; do
cur=$(sed -n -e 's/^[[:space:]]*session.gc_maxlifetime[[:space:]]*=[[:space:]]*\([0-9]\+\).*$/\1/p' $ini 2>/dev/null || true);
[ -z "$cur" ] && cur=0
[ "$cur" -gt "$max" ] && max=$cur
done
echo $(($max/60))
exit 0
поэтому он ищет все файлы php.ini, находит наибольшее значение, сравнивает его с 1440 (что составляет 24 минуты).
Вот файлы php.ini
/etc/php5/apache2/php.ini
session.gc_maxlifetime = 1440
/etc/php5/cgi/php.ini
session.gc_maxlifetime = 1440
/etc/php5/cli/php.ini
session.gc_maxlifetime = 1440
но почему мой сеанс сценария завершается через 30 минут, а не через 24 минуты?
РЕДАКТИРОВАТЬ № 2: CRON работает каждые 30 минут, поэтому сеанс выглядит убитым с 30-минутными интервалами. Но это также может быть от 24 до 54 минут, к вашему сведению.
Также просматривая код в: /usr/lib/php5/maxlifetime он принимает самое высокое значение, и во время моего тестирования я пытался снизить порог, чтобы ускорить условие.
Похоже, мне просто нужно увеличить один в файлах php.ini до более чем одного часа тестового теста.