2016-02-17 1 views
5

Kann jemand erklären, was eine Sitzungslotterie ist? Ich habe die Standard-Session-Konfigurationsdatei für das Laravel-Framework beigefügt.Sitzung fegen lotterie

Fragen: 1. Es besagt, dass einige Sitzung Treiber müssen manuell ihren Speicherort fegen. Kann jemand diesen Prozess beschreiben und warum ist es notwendig? Welche Sitzungstreiber benötigen diese Aktion? 2. Warum ist eine Lotterie notwendig? Wenn eine Speicherform (Datenbank) voll ist, warum muss sie zufällig sein? Warum kann das Framework nicht die alten Sitzungen durchsuchen, wenn es erkennt, dass der Treiber voll ist?

/* 
|-------------------------------------------------------------------------- 
| Session Sweeping Lottery 
|-------------------------------------------------------------------------- 
| 
| Some session drivers must manually sweep their storage location to get 
| rid of old sessions from storage. Here are the chances that it will 
| happen on a given request. By default, the odds are 2 out of 100. 
| 
*/ 

'lottery' => array(2, 100), 

Antwort

4

So ist eine Sitzung ein Stück Daten, die für eine bestimmte Zeit auf dem Server gespeichert wird.

Stellen Sie sich vor, Sie verwenden einen Ordner mit Dateien, um die Sitzungen zu speichern. Es muss einen Moment geben, in dem die alten Sitzungen geklärt werden sollten. Da es keine Möglichkeit gibt, die Dateien alle x Stunden automatisch zu überprüfen, werden die Sitzungsdateien bei bestimmten Anfragen überprüft.
Diese Einstellung ist die Möglichkeit, dass diese Überprüfung stattfindet. In diesem Fall 2 von 100 für jede Anfrage.

Ich denke, der einzige Session-Treiber, der dies derzeit benötigt, ist der Datenbanktreiber.

Wenn Sie den Speicher voll sweepen, besteht die Möglichkeit, dass neue Sitzungen nicht gestartet werden können, bis der Speicher gelöscht wurde.
Wenn Sie den Speicher bei jeder Anfrage durchsuchen würden, würden alle Ihre Anfragen sehr langsam werden.

+1

Sind dies 2 von 100 Anfragen in einer Sitzung oder 2 von 100 Anfragen aus mehreren Sitzungen? Wenn es das letztere ist, scheint es, dass das 2 von 100 viel zu häufig für jede Seite mit annehmbarem Verkehr ist, ist das richtig? – Andrew

+0

Ich verstehe die Notwendigkeit, für einen Datenbanktreiber zu sweepen, da ich dort Speichergrenzen für verschiedene Datentypen abbilden würde. Können Sie irgendwelche Probleme vorhersehen, wenn ich die Durchlauffrequenz für einen Dateisitzungstreiber auf extrem niedrig herabsetze? z.B. (2 von 1000000) – Andrew

+1

Der Sweep wird bei 2 von 100 Anfragen nicht vorkommen. Die Änderung eines Sweep-Vorgangs ist 2 von 100 für jede Anforderung. – Jerodev

Verwandte Themen