CodeIgniter 3-Sitzung ging verloren, wenn die Sitzungs-ID nur mit dem Memcached-Treiber neu generiert wurde
<p>Ich entwickle ein Langzeitprojekt mit dem CodeIgniter 3-Framework. Seit mehreren Monaten haben wir Probleme mit zufälligen Sitzungsverlusten. Ich habe die Framework-Dateien auf die neueste Version (3.1.13) aktualisiert. Es sieht so aus, als ob das Problem dadurch auf dem Entwicklungsserver behoben wurde, aber in der Produktion besteht es immer noch. Aber mir ist aufgefallen, dass dies jetzt nur dann passiert, wenn die Antwort ein neues Sitzungscookie sendet, was passiert, wenn die Sitzungs-ID neu generiert wird. Wenn ich <code>$config['sess_time_to_update']</code> ändere, wird die erforderliche Zeit korrekt angezeigt. </p>
<p>Der Unterschied zwischen einem Entwicklungsserver und einem Produktionsserver ist der Sitzungstreiber – es handelt sich um eine Datei auf dem Entwicklungsserver, während wir in der Produktion Memcached verwenden. Also habe ich ein Experiment durchgeführt und den Treiber auf Datei umgestellt, und die Sitzung ging nicht mehr verloren. Ich habe auch versucht, es mit dem Redis-Treiber einzurichten, und auch das hat keine Probleme verursacht. Es muss also ein Problem mit dem Memcached-Treiber sein. Aber ich möchte nicht gegen ein anderes eintauschen. Es gibt keine Fehler in den Protokollen. Ich habe auch überprüft, ob die Datei php.ini und die zwischengespeicherten Variablen beide Standardwerte haben. </p>
<p>CodeIgniter v3.1.13, PHP 7.4.3, Amazon ElastiCache für Memcached</p>
<p>Dies ist die Konfiguration:</p>
<pre class="brush:php;toolbar:false;">$config['sess_driver'] = 'memcached';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 14400;
$config['sess_save_path'] = 'host.com:11211';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;</pre>
<p>Für Ideen, wo Sie suchen oder was Sie überprüfen sollten, wären wir sehr dankbar. </p>