SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 15.12.2003, 10:00:22
jensn jensn ist offline
Anfänger
 
Registriert seit: Dec 2003
Beiträge: 21
Session Handling

Hallo,

ich bin gerade dabei ein Projekt von Java auf PHP umzustellen und suche mir gerade einen Wolf um einen Beitrag zu finden, der mir das PHP Session Handling zu erklären. Ok, ich weiss, wie ich benutzerdefinierte Variablen in der Session halten kann, aber wie z.B. bau ich einen Session Listener?

Beispiel: Ich habe eine statisches Array von UserObjecten. Dies stellt die Liste aller user, die gerade auf dem System sind dar.
Wenn un ein User längere Zeit inaktiv war oder sich abneldet, soll ein Tinmeout zuschalgen, der das jeweilige Userobjet aus der Liste löscht.

In Java hatte ich dafür einen HttpSessionListener. Was mache in PHP...

Help!

Gruß
Jens
Mit Zitat antworten
  #2  
Alt 15.12.2003, 14:46:56
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
Hi Jensn

Erst mal willkommen auf SelfPHP.


Also einen Lister der Sessions gibt es unter PHP ned.
Du hättest aber die Möglichkeit, das Verzeichnis auszulesen, aber das kann zu Problemen führen, zb Alte Sessions, bzw. Fremde-Sessions

Zum TimeOut.
Je nach Config läuft die Session automatisch nach einer gewissen Zeit ab.

Du kannst aber sehr leicht einen Session-Lister schreiben.
In dem du die generierten Sessions in einem File oder DB speicherst.
Jedes mal wenn der User eine Aktion durchführt, änderst du einen Zeitwert.

So bekommst du aufschluss ob die Session abgelaufen ist.
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
  #3  
Alt 15.12.2003, 14:51:14
jensn jensn ist offline
Anfänger
 
Registriert seit: Dec 2003
Beiträge: 21
Selbst schreiben

Uff! Das ist aber arg umständlich! Ich bin davon ausgegangen, daß es da was eingebautes in PHP gibt...
Soll das heißen, daß alle Seiten, die eine Liste der Online User haben, so vorgehen? Ist das nicht arg langsam?

.. sich wundernt...

Jens
Mit Zitat antworten
  #4  
Alt 15.12.2003, 15:16:40
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
Jaein

Es gibt mehrere Methode um zu diesem Ergebnis zu kommen.
die beste ist aber die die ich oben beschrieben habe
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
  #5  
Alt 17.12.2003, 10:08:09
jensn jensn ist offline
Anfänger
 
Registriert seit: Dec 2003
Beiträge: 21
Sessions ...

Hi Nev,

ich kann trotzdem nicht verstehe, dass ich der erste bin, der nach so einer Funktionalität fragt und keine Antwort bekomme wie "benutze die Lib XYZ..."

Es kann doch nicht wahr sein, dass PHP in Punkto Session Handling nichts vernüftiges bietet...!!!

Folgende Aufgabe habe ich zu lösen:

Jeder User, der sich auf meiner Plattform
(btw:http://www.diaet-community.de *) anmeldet, bekommt in seine Session ein SessionObject gespeichert (so mit Userid, Namen, etc). Ich benutze dazu;

$_SESSION['userobj'] = $theObject;

Soweit, so gut.

Was ich nun brauche ist:


1 - Ein Singleton, der mir eine Liste aller Sessionobjekte gibt (damit ich z.B. eine Liste aller Online User anzeigen kann.

2 - Ein "Mechanismus", der einzelne Session Objekte aus dem Singleton schmeißt, wenn der User sich abmeldet oder z.B. länger als 20 Minuten inaktive war.


Ich würde mich freuen, wenn mir jemand Code schicken würde damit ich das Rad nicht ein zweites mal neu entwickeln muss...

Gruß & Dank für den Support
Jens



*ich stelle die Seite gerade von Java auf PHP um ...
Mit Zitat antworten
  #6  
Alt 17.12.2003, 10:32:53
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
Hi @gain

Auf Fremde Sessions kannst du ned zu greifen, da die Session nur für den User läuft.

Wie ich schon oben beschrieben habe, kannst du es mit einem Read-Dir machen (Verzeichniss auslesen), aber dazu brauchst du eine Berechtigung.

Zu den derzeitigen Scripts die so im Umlauf sind.
Diese sind nicht genau, sie beziehen sich auf eine Zeitspanne, meist auf 15 oder 30 min.

Das hängt mit dem Session_timeout zusammen, welches in der Config steht.

Das Session_timeout tritt dann in kraft, wenn der User in den letzten 15-30 (je nach Config) nichts macht, also auch kein Site-Refresh, bzw wechsel.

Die meisten Systeme verwenden einen DB-Lösung um diese Thematik zu lösen.

Sie speichern die aktuelle Zeit in einem Tracker ab.

Über diese Methode kannst du sehr einfach dann auch einen Tracker speilen.
Das heißt du verfolgst den User durchs System, kann teilweise sehr aufschluss reich sein.
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
  #7  
Alt 17.12.2003, 18:41:39
jensn jensn ist offline
Anfänger
 
Registriert seit: Dec 2003
Beiträge: 21
Ich machs mir selber ..

... habe begonnen einen eigenen "SessionManager" zu schreiben. Mal sehen, wenn der Code generisch genug ist poste ich Ihn mal hier.

Mal was anderes: Habe mir gerade mal http://www.burnworld.de/
angeschaut. Kannst Du mir veraten, wie die die Footerzeile ("Diese Seite wurde in .. Sec, mit xxx DB anfragen in xxx secunden") hinbekommst?

Gruß
Jens
Mit Zitat antworten
  #8  
Alt 17.12.2003, 20:55:17
overclocker overclocker ist offline
Junior Member
 
Registriert seit: May 2002
Beiträge: 179
@jensn:
das kann man mit der PEAR Klasse Benchmark machen:
http://tut.php-q.net/pear-div.html#u3
Mit Zitat antworten
  #9  
Alt 18.12.2003, 18:52:41
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
Re: Ich machs mir selber ..

Zitat:
Original geschrieben von jensn
[B]... habe begonnen einen eigenen "SessionManager" zu schreiben.
Man muß nicht jedes Fahrrad komplett neu erfinden.
1. http://de3.php.net/manual/de/functio...ve-handler.php
Das Beispiel so ändern, daß die Session in einer DB Tabelle abgesppeichert wird.
2. in php.ini session.save_handler = user
bzw. im Virtualhost php_admin_value session.save_handler user setzen

Zitat:
Mal was anderes: Habe mir gerade mal http://www.burnworld.de/ angeschaut. Kannst Du mir veraten, wie die die Footerzeile ("Diese Seite wurde in .. Sec, mit xxx DB anfragen in xxx secunden") hinbekommst?
Die Zeitmessung ist relativ einfach. Am Scriptbeginn die Zeit ermitteln, merken, am Scriptende ebenfalls, Differenz bilden und aus-printen. Ein Beispiel gibt's hier:
25.5. Wie kann ich die Performance zweier Befehle vergleichen?
http://www.dclp-faq.de/q/q-code-performance.html

Das zählen der DB Zugriffe ist etwas trickreicher. Alle DB Zugriffe über eine Klasse laufen lassen, die nebenbei die querys zählt.
Mit Zitat antworten
  #10  
Alt 18.12.2003, 19:10:42
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
Hi @gain

Das wäre auch eine Möglichkeit.

Danke für den Beitrag meikel

@meikel
Schön dich hier zu sehen.
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:58:06 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt