(05.10.2021, 11:09)Schnapsnase schrieb: [ -> ]@JAY
ich benutze in diesem Plugin einen sehr ähnlichen Code.
Zumindest sind die Querys fast identisch.
Wenn es wirklich an der Session-Tabelle liegt, müsste ja mein Plugin auch Probleme bereiten, tut es aber nicht.
Es liegt aber daran. Ich hab es getestet. Ich habe den gesamten Code nicht analysiert, aber zumindest der o.g Code von mir hilft um das Problem zu umgehen. Dabei beziehe ich mich sogar nur indirekt auf die Session Tabelle.
Nach mehrmaligen probieren habe ich es durch 2 Anmeldungen (PC und Handy) geschafft 2 Einträge in der Sessions Tabelle zu erzeugen. Der neu angemeldete Benutzer sieht sich nun doppelt auf dem neuen Gerät.
Siehe Anhang:
(05.10.2021, 11:13)itsmeJAY schrieb: [ -> ]Nach mehrmaligen probieren habe ich es durch 2 Anmeldungen (PC und Handy) geschafft 2 Einträge in der Sessions Tabelle zu erzeugen.
Dann bist du aber auch wirklich mit 2 Geräten gleichzeitig online.
Das ist aber m.M. nach nicht der Ausgangspunkt des Problems.
Der Fehler entsteht auch, wenn man wirklich nur mit einem Gerät arbeitet. Wie soll das dann passieren?
Könnte durch einen Fehler passieren oder eine abgelaufene Sitzung. Ich weiß es nicht zu 100 Prozent, aber Fakt ist, dass es nur dadurch passieren kann. Der Code bietet doch gar keinen anderen Spielraum.
Ich gebe dir ja insofern recht, dass im Code nichts auf dieses Problem hindeutet.
Warum habe ich dann aber mit meinem Plugin diese Probleme nicht?
Der Code in meinem Plugin ist nun wirklich nicht sehr viel anders.
(05.10.2021, 11:03)itsmeJAY schrieb: [ -> ]Fügt zum Start der while-Schleife folgenden Code ein bzw. ergänzt die While-Schleife in der Datei portal/blocks/block_wwo24.php in Zeile 37 um folgenden Code:
PHP-Code:
$onlineUsersArray[] = $onlineuser['uid'];
$counted = array_count_values($onlineUsersArray);
if ($counted[$onlineuser['uid']] > 1) {
continue;
}
Binde ich vorstehenden Code ein, wird eine weiße Seite angezeigt und im Log-File ein PHP-Fehler protokolliert.
PHP-Fehler:
Zitat:PHP Fatal error: 'continue' not in the 'loop' or 'switch' context in /www/htdocs/xxxxxxxx/portal/blocks/block_wwo24.php on line 42
Dann schreib doch nicht "in Zeile 37" sondern:
Füge nach (ca. Zeile 40)
PHP-Code:
while($onlineuser = $db->fetch_array($query))
diesen Absatz:
PHP-Code:
$onlineUsersArray[] = $onlineuser['uid'];
$counted = array_count_values($onlineUsersArray);
if ($counted[$onlineuser['uid']] > 1) {
continue;
}
ein. Somit findet sich ein jeder leichter zurecht weil etwaige Fehlinterpretationen im Vorfeld vermieden werden.
Jetzt heist es abwarten und Beobachten ob das Fehlverhalten nochmals aufgezeigt wird.
Die doppelten User sind dann nicht mehr gegeben = das gewünschte Ziel.
Die Ladezeit der Portalseite wurde erheblich erhöht. Vorher = 1 Sekunde, nachher = 27 Sekunden (bei lediglich 12 aufgeführten Usern). Vllt. findet sich dazu noch eine Lösung.
Besten Dank für Dein Engagement.
Hmm, dann muss ich scheinbar doch die Queries neu schreiben. Dachte ich komm da drum herum. :/
@ Gerti
Hallo Gerti,
falls du mein
Plugin einsetzt, dann lade dir mal diese abgeänderte Plugin-Datei hoch:
[
attachment=13142]
Damit solltest du eigentlich die Variable {$online_today} vom Plugin sowohl im Template "pro_portal", als auch in anderen Block-Templates verwenden können.
Diese Variable gibt es allerdings gleichnamig im ProPortal und in meinem Plugin. Daher musst du mal testen, wie sich das wo auswirkt.
Dafür hatte ich jetzt keine Zeit mehr.
Notfalls ändern wir das nochmal.
(05.10.2021, 20:23)itsmeJAY schrieb: [ -> ]Hmm, dann muss ich scheinbar doch die Queries neu schreiben. Dachte ich komm da drum herum. :/
Sorry noch mal , ich habe den Code von dir so eingefügt
PHP-Code:
$comma = $onlinemembers = '';
$membercount = $guestcount = $anoncount = 0;
$doneusers = $ips = array();
foreach($queries as $query)
{
$onlineUsersArray[] = $onlineuser['uid'];
$counted = array_count_values($onlineUsersArray);
if ($counted[$onlineuser['uid']] > 1) {
continue;
}
while($onlineuser = $db->fetch_array($query))
{
if(isset($onlineuser['sid'])){
$botkey = strtolower(str_replace("bot=", '', $onlineuser['sid']));
}
das sind Zeile 32 - 40 bei mir
und bei mir funktiniert es ohne Probleme
oder hab ich da was komplett falsch gemacht und geht nur durch zufall weiter?