Debian basierte Systeme-Sitzung getötet, in 30 Minuten in speziellen cron, wie zu überschreiben?
Worden herausziehen meine Haare versuchen herauszufinden, warum meine Sitzungen sind terminiert/gekillt/zerstört bei 30 Minuten. Nun, es sieht aus wie Debian-basierte Systeme haben ein spezielles cron ausgeführt, der ignoriert alle php.ini-und apache-Konfigurationen und tötet jede Sitzung im Leerlauf bei 30 Minuten.
Den cron-Pfad: /etc/cron.d/php5
Innerhalb der cron:
# /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
Ich bin nicht schlecht, zu konfigurieren und einrichten von hosts, aber ich bin kein sysAdmin. Könnte mir bitte jemand helfen überschreiben/Bearbeiten/ändern/neu konfigurieren, so daß ich den Wert festlegen, mehr? Ich denke 3 Stunden wäre schön, aber ich möchte die Veränderungen zu verstehen, wenn also jemand höher hinauf will, um die session-Zeit kürzer/länger ich con Dokument konfigurieren Sie die änderung.
Dank für jede Einsicht helfen, auf dieser
BEARBEITEN:
Hinzufügen /usr/lib/php5/maxlifetime code
#!/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
so sieht es auf der Suche alle php.ini-Dateien, findet den größten Wert, vergleicht ihn mit 1440 (24 Minuten).
Hier sind die php.ini-Dateien
/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
aber warum funktioniert mein script session gekillt bei 30 Minuten, und nicht 24 Minuten?
EDIT #2:
CRON alle 30 Minuten fährt, ist der Grund, warum die session aussieht, getötet zu werden, bei 30-Minuten-Takt.
Es könnte aber auch sein, 24 zu 54 Minuten, FYI
Ebenfalls auf der Suche über den code in: /usr/lib/php5/maxlifetime
es nimmt den höchsten Wert, und während meiner Tests, die ich versucht hatte zu senken die Schwelle zu beschleunigen, den Zustand.
Sieht aus wie ich brauchen nur zu erhöhen, eine auf die php.ini-Dateien über eine Stunde test.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bearbeiten Sie die Datei
/usr/lib/php5/maxlifetime
Sollte der Wert in Sekunden. Diese Datei wird eigentlich auch überprüfen Sie Ihre php.ini, also ich weiß nicht, warum es nicht für Sie arbeiten.
Dies ist eine Frage für serverfault.com.
Jedoch ändern
session.gc_maxlifetime
im/etc/php5/apache2/php.ini
oder - wenn Sie nicht über eine apache2 einem anderen/etc/php5/*/php.ini
- Dateien. Das Skript/usr/lib/php5/maxlifetime
dann verwenden Sie die maximale für diese Einstellung gefunden, in jede dieser Dateien.Bearbeiten
maxlifetime
nicht helfen wird, oder zumindest nur solange, bis diephp5-common
Paket ist wieder aktualisiert.Können Sie Ihren eigenen Pfad der Sitzung
session.save_path
ODER verwenden Sie einen anderen hf insgesamtsession.save_handler
Wirst du aber müssen eine geeignete Mechanismus für die Verwaltung von unerwünschten session-Dateien.
Fanden diese in meinem
php.ini
Ich habe vor kurzem lief in dieses problem, wenn unerwünschte session-Dateien häuften, weil ich mit PHP und
mod_fcgid
mit einem benutzerdefiniertensession.save_path
für jeden virtualhost.Wenn Sie hierher kamen, weil Ihre cron wirft Fehler alle 30 Minuten (um 09 und 39) Sie haben vielleicht anderes Fehler im syslog und/oder Postfach:
Der Grund dafür vielleicht, dass Sie
upgraded your Debian to Wheezy
und Sie haben die alten Einträge in Ihrem/etc/php5/apache2/php.ini
.Musste ich kommentieren Sie die folgenden Zeilen und die Fehler sind verschwunden.
Im Schreibe dies, weil dies ist einer der top-google-Ergebnisse, wenn Sie die Suche nach dem Fehler-Meldungen, und es kann sich auf viele Benutzer/admins, die gepflegt thier debian-Installationen für mehr als eine Version.
PS: Das hat mir sehr geholfen: http://vernontbludgeon.com/blog/archives/2013/10/debian-php-session-garbage-collection-maxlifetime-fails-when-php.ini-has-obsolete-directives.html
Es ist genau dort in deinen cronjob mit php5-fragment:
Suchen und löschen Alter Sitzungen alle 30 Minuten
Ist es egal, das Skript löscht 24 minute alt, Sitzungen, wenn das Skript nicht ausgeführt wird mehr als alle 30 Minuten 🙂
Unter cron zum löschen inaktiver Sitzungen.
39 20 * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/-depth-mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm