Ich habe schon gelesen, dass diese Prüfung anscheinend nicht unbedingt zuverlässig funktioniert. Allerdings weiß ich gerade nicht wie ich das umbauen müsste, dass es sauber funktioniert.
Könnt ihr mir helfen oder liegt der Fehler woanders?
Ich weiß den genauen Zusammenhang nicht mehr, aber das hatte irgendwas mit Bots zu tun glaube ich. Es kann auf jeden Fall vorkommen, dass unter bestimmten Umständen die Session nicht schreibbar ist. Die sCheckUser schreibt halt immer was in die Session und das funktioniert nicht. Ich meine mich zu erinnern, dass das z.B. für den Google-Crawler fatal ist, weil der dann überall nur noch Fehlermeldungen bekommt (je nachdem wo das Plugin überall eingesetzt wird).
Ich hatte das dann so gelöst, dass ich das ganze in einen try/catch-block geschrieben habe und die Exception abgefangen habe. Wenn eine Exception auftaucht habe ich dann einfach meine $loggedIn Variable auf false gesetzt.
das ist zZt tatsächlich so: Bei Bots wird die Session für Writes gesperrt, um die Datenbank nicht unnötig mit “leeren” Sessions zu befüllen. Im Standard ist das soweit kein Problem - allerdings laufen Drittplugins bisweilen in die “Falle”. Entsprechend wird das bei uns wohl so umgestellt, dass Bot-Sessions eine Dummy-Session erhalten, die nicht persistiert wird. Ich weiß gerade nicht, ob das schon drin ist - aber da sind wir dran. Bis dahin müsstet ihr das wie von @t2oh4e vorgeschlagen selbst abfangen - oder händisch darauf prüfen, ob es sich um eine Bot-Session handelt, bevor ihr schreibt.
Ah ok, super. Das mit den Bots hatte ich gelesen. Das macht dann auch Sinn, weil die Errors unsere SEO Agentur gemeldet hat und dass wir dringend eine Lösung brauchen weil sonst der Shop in Google abgewertet wird.
@t2oh4e dann werde ich es mit try/catch Block versuchen.
der Artikel ist den Aufräumarbeiten zum Opfer gefallen, da er aber doch hier und da noch genutzt wird, hab ich ihn erstmal wieder aktiviert. Nebenbei hab ich ein Ticket erstellt, dass dafür ein Folgeartikel in der aktuellen Developer-Doku erstellt wird. Sobald der fertig ist, richten wir auch eine Weiterleitung ein.