Usermap

Begonnen von taranis, 16 März 2004, 22:25:43

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

taranis

Hallo,
es gibt ein Modul "Usermap" für Nuke. Dabei werden in einer Deutschlandkarte die User mit einem Pin angezeigt. Interessante Sache.

Folgendes Problem dabei. Ich habe es versucht zum laufen zu bekommen. Ging auch soweit bis auf das es nach einer Zeit Probleme mit der Seite gibt (MX) gibt. Diese kann dann plötzlich nicht mehr angezeigt werden oder die Aktionen werden abgebrochen. Erst nach einem Logout oder Cookie löschen geht es dann wieder, solange bis die Userkarte aufgerufen wird.

Ich vermute, dass es an der Session Verwaltung lliegt, die ja beim MX anders ist.

Wer also evtl. Interesse hat, das Teil umzucoden, der möge sich melden. Alternativ kann man es auch bei nukemodule downloaden.

Änderungen sind auch im Bereich Geschlecht und der Angabe für die PLZ zu machen. Hier habe ich mit einer Erweiterung in der Tabelle _users gearbeitet und das hat auch alles ohne Probs geklappt. Geht eigentlich nur noch um das Abstürzen der Seite ;-)

taranis

Hier mal ein Schnipsel mit Session:

session_start();
$_SESSION["usermap"]=$MyMap->dumpbuffer();
$end=gettimeofday();
$start=$start["sec"]+($start["usec"]/1000000.0);
$end=$end["sec"]+($end["usec"]/1000000.0);
$sec=$end-$start;
?>

Das ist aus der Index.... Hat evtl ja was mit dem Fehler zu tun  ;)

jubilee

Nur mal kurz, warum es Probleme gibt.
Für jeden User, der das Modul öffnet, wird über
  $_SESSION["usermap"]=$MyMap->dumpbuffer();
Eine Session mit einer Instanz von $MyMap->dumpbuffer() angelegt.
MyMap ist eine Instanz von der Klasse Map (   $MyMap new Map ("modules/$name/karte.png"); )
Es wird dabei als Parameter modules/$name/karte.png übergeben (die eigentliche Karte)
Die initialisierungfunktion von der Klasse MAP :
 
Zitatfunction Map ($file) {
       $this->img = imagecreatefrompng($file);

        $this->size_x = imagesx($this->img);
        $this->size_y = imagesy($this->img);
   }
kurz gesagt, es wird für jeden User der das Modul öffnet/ansieht eine Session mit einer Instanz der Kartengrafik geöffnet. Diese ist aber fast 300 kB groß. Kein wunder das Du da gerade bei vielen Usern ein Problem bekommst.
Ausserdem sehe ich nirgens, das die Session wieder aufgehoben wird .
So bleibt die dann auch im Session_save_path gespeichert.
Über das weitere mach ich mir dann später nochmal gedanken.
MfG
jubilee

Andi

Hi :)

ZitatSo bleibt die dann auch im Session_save_path gespeichert.
Nicht im session_savepath sondern in der sessiontabelle. Da bei Aufruf des Moduls bereits die session vom Mx gestartet ist, wird diese verwendet und keine neue Session gestartet.
Macht bei nur 10 Usern 3Mb in der Tabelle..... Solange sich die User nicht ausloggen und die Sessionlaufzeit nicht abgelaufen ist, bleiben diese Daten erhalten. Ruckzuck sammeln sich so, auf der gut besuchten Seite, 100Mb in der Sessiontabelle. Die Sessiontabelle wird bei jedem Seitenaufruf ausgelesen und beschrieben. Dass da der Server abkackt ist verständlich....
schön´s Grüssle, Andi

NeMeSiSX2LC

Jupps hab ich bei mir gemerkt wie ich das teil local laufen hatte
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

jubilee

Hallo !
 
ZitatNicht im session_savepath sondern in der sessiontabelle. Da bei Aufruf des Moduls bereits die session vom Mx gestartet ist, wird diese verwendet und keine neue Session gestartet.
 
Ja, stimmt. macht die Sache dann natürlich noch viel schlimmer.
Ich schau mir das Teil nochmal genauer an, aber mir
ist auch nicht ganz verständlich warum die Kartengrafik überhaupt in einer Session gespeichert werden sollte.
Ich verspreche mir in (diesem Fall zumindest) keine Vorteile davon. ?!
MfG
jubilee


[Editiert am 17/3/2004 von jubilee]

taranis

Also mit der Session verstehe ich auch nicht. Ist doch eigentlich total überflüssig oder?
Das Teil soll doch einfach gesagt nur die Daten aus der Tabelle hollen und auf der Karte anzeigen.

Ich glaube aber das Teil stammt ursprünglich aus dem phpKit, zumindest bin ich da gelandet, als ich mal die Links verfolgt habe, die im Code angegeben sind.

nicron

und wo ist das Problem??

dann sollte doch jemand mal diese einfache zeile hier reinschreiben:

unset($_SESSION["usermap"]);

das kommt in die karte.php vor dem abschleißenden ?>

jubilee

Hallo !
 
Zitatund wo ist das Problem??

dann sollte doch jemand mal diese einfache zeile hier reinschreiben:
Keep Cool,
wir wollen Dir nicht zu nahe treten.

nicron

Ja nein. hatte ich auch nicht so verstanden.  :D

Nur sollte das doch eine einfache lösung sein oder?

jubilee

Hmmmm .....
session_unregister("usermap");
dann unset($_SESSION["usermap"]);
sonst mag es Probleme geben.
MfG
jubilee

NeMeSiSX2LC

So mal wieder hoch holen. Also hab das jetzt so gemacht wie hier. Aber bei mir erscheint noch nicht einmal die Karte. was mach ich falsch??
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

taranis

Ich denke es liegt daran, dass er als Image eine PHP Datei aufrufen will. Ersetzt man diese durch das Karten Image wird die Karte angezeigt.
Ich habe das Teil nicht mehr laufen. Irgendwie klappt es nicht damit. Hatte noch eine andere externe Karte im Test aber auch diese hatte ne Menge Fehler in den Koordinaten.

Ich warte noch auf eine andere Version aber leider wird es da wohl noch etwas dauern. Ansonsten ist mir leider keine Userkarte mehr über den Monitor geflimmert, leider...