Εμφανιση των usernames των χρηστων που ειναι online.

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Rallystas13
Δημοσιεύσεις: 1
Εγγραφή: 08 Οκτ 2009 11:57

Εμφανιση των usernames των χρηστων που ειναι online.

Δημοσίευση από Rallystas13 » 08 Οκτ 2009 12:17

γεια σας,

εχω ενα site με μερικους εγγεγραμμενους χρηστες οι οποιοι ειναι περασμενοι σε βαση δεδομενων mySQL. θα ηθελα να προβαλω τα usernames των χρηστων που ειναι συνδεδεμενοι εκεινη τη στιγμη στη σελιδα μου. (ακριβως αυτη τη λειτουργια εχει και το συγκεκριμενο forum στο κατω αριστερο μερος του που λεει "Ποιος είναι Online"). Μπορω να προσθεσω το session του καθε χρηστη και την ωρα που εκανε login στη σελιδα, σ'εναν πινακα στην database και οταν κανει logout να τον αφαιρεσω. ετσι θα μπορω να κανω αυτο που λεω παραπανω.

Αυτο ομως που δεν γνωριζω να κανω ειναι οταν ο χρηστης κλεισει τον browser χωρις να κανει logout (οπως συνηθως κανουν ολοι) να διαγραψω απ'τον πινακα το συγκεκριμενο record. Δηλαδη να διαγραφεται το record μετα απο π.χ. 20 λεπτα αδρανειας.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Εμφανιση των usernames των χρηστων που ειναι online.

Δημοσίευση από Rapid-eraser » 09 Οκτ 2009 15:37

Το timeout είναι η σίγουρη λύση.
Απλά θα πρέπει να το ανανεώνεις σε κάθε hit.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Εμφανιση των usernames των χρηστων που ειναι online.

Δημοσίευση από nbc » 09 Οκτ 2009 21:54

Rallystas13 έγραψε:Αυτο ομως που δεν γνωριζω να κανω ειναι οταν ο χρηστης κλεισει τον browser χωρις να κανει logout (οπως συνηθως κανουν ολοι) να διαγραψω απ'τον πινακα το συγκεκριμενο record. Δηλαδη να διαγραφεται το record μετα απο π.χ. 20 λεπτα αδρανειας.
Υπάρχουν 2 προσεγγίσεις, στο σύνηθες αυτό πρόβλημα:

1. Inline housekeeping

Κώδικας: Επιλογή όλων

DELETE FROM Session WHERE `last_activity` < &#40;TIMENOW - TIMEOUT&#41;
SELECT * FROM Session
Πλεονέκτημα: ευκολία
Μειονέκτημα: πρόσθετο query σε κάθε hit

2. Delayed housekeeping

Κώδικας: Επιλογή όλων

SELECT * FROM Session WHERE `last_activity` >= &#40;TIMENOW - TIMEOUT&#41;
Το παραπάνω query εκτελείται σε κάθε hit (ή όποτε παρίσταται ανάγκη). Το housekeeping μπορεί να γίνεται περιοδικά, πχ 2 φορές την ημέρα ή συχνότερα.

Η περιοδική εκτέλεση απαιτεί έναν scheduler τύπου cron. Λόγω της φύσης του προβλήματος (η ύπαρξή του δεν είναι δεδομένη), πολλές εφαρμογές υιοθετούν δικό τους "scheduler" με το εξής τέχνασμα:

Στο τέλος της σελίδας (πχ πριν το /body) βάζουν ένα img tag το οποίο επιστρέφει ένα transparent 1x1 gif (το λεγόμενο clear.gif). Η κλήση αυτού του gif ουσιαστικά εκτελεί ένα script που σκοπό έχει το housekeeping.

Κώδικας: Επιλογή όλων

<img src="cron.php" width=0 height=0 alt="" />
Είναι πολύ εύκολο να παράγεις ένα clear.gif on the fly

Κώδικας: Επιλογή όλων

$gif = base64_decode&#40;"R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="&#41;;

Άβαταρ μέλους
Basilakis
PHP Moderator
Δημοσιεύσεις: 8574
Εγγραφή: 17 Νοέμ 2003 13:03
Τοποθεσία: Womans' Brain
Επικοινωνία:

Εμφανιση των usernames των χρηστων που ειναι online.

Δημοσίευση από Basilakis » 09 Οκτ 2009 22:52

Μπορείς να ορίσεις και το cron να τρέχει ανα κάποια ώρα, μέσα απο το cpanel. Το αναφέρω μιας και η λύση είναι πολύ καλή :)

Μάλισ

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες