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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
15.12.2003, 10:00:22
|
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
|
15.12.2003, 14:46:56
|
|
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.
|
15.12.2003, 14:51:14
|
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
|
15.12.2003, 15:16:40
|
|
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
|
17.12.2003, 10:08:09
|
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 ...
|
17.12.2003, 10:32:53
|
|
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.
|
17.12.2003, 18:41:39
|
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
|
18.12.2003, 18:52:41
|
|
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.
|
18.12.2003, 19:10:42
|
|
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.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:58:06 Uhr.
|