Επικοινωνία χρηστών(Web Clients) Μέ Κοινόχρηστες μεταβλητές

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

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

Απάντηση
Άβαταρ μέλους
nikirtsi
Δημοσιεύσεις: 169
Εγγραφή: 02 Ιουν 2006 16:35

Επικοινωνία χρηστών(Web Clients) Μέ Κοινόχρηστες μεταβλητές

Δημοσίευση από nikirtsi » 02 Ιουν 2006 16:49

Καλησπέρα Σάς...
Θέλω Σέ php Νά Επιτεύξω Τό Κάτωθι :

Νά Δίνω Τήν Ικανότητα Νά Ορίζει Ένας Χρήστης (Μία Μεταβλητή Μέσα Από Μία Σελίδα)
Καί Η Αυτή Μεταβλητή Νά Είναι Ώς Τιμή Ορατή Σέ Έναν Άλλον Χρήστη(Web Client) Έως Ότου Ο Πρώτος Αποσυνδεθεί.

Μία Ιδέα Υλοποίησης Αυτού Θά Ήταν Τήν Εξής Τιμή Νά Τήν Αποθήκευα Σέ Κάποια Βάση Δεδομένων ή Ακόμα Καί Σέ Ένα Αρχείο Καί Κατά Τήν Έξοδο Αυτού Νά Τήν ""Έσβηνα""".

Τό Εξής Όμως Δημιουργεί Προβλήματα Σέ Περίπτωσιν Βίαιου Τερματισμού Τού Web Client , Αφήνωντας Τήν Έτσι Στό Αρχείο Ή Στήν Βάση Νά Παραμένει.

Θέλω Επομένως Νά Δημιουργήσω Μία Μεταβλητή Η Οποία Θά Είναι Κοινοπροσβάσιμη Καί Ορατή Σέ Όλους Τούς Τρέχοντες Χρήστες Μίας Σελίδος.

Υπάρχει Λύση Από Τήν Πλέυρά Τής Php ;

Τά Sessions Καί Cookies Φυσικά Δέν Βολεύουν ,
Αλλά Ούτε Καί Μία Μόνιμη Αποθηκευτή Δομή Τύπου Αρχείου ή Βάσεως....

Επομένως....?
Π.χ Πώς Θά Μπορούσα Νά Ήξερα Πόσοι Χρήστες Είναι Συνδεδεμένοι Σέ Μία Σελίδα?

Ευχαριστώ Εκ Τών Προτέρων...
Ακόμα και ο ήλιος, στό αριστερό μελίγγι μου ανατέλλει καί στό ζερβό δύει.

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Επικοινωνία χρηστών(Web Clients) Μέ Κοινόχρηστες μεταβλητές

Δημοσίευση από ThyClub » 02 Ιουν 2006 16:52

Επομένως....?
Π.χ Πώς Θά Μπορούσα Νά Ήξερα Πόσοι Χρήστες Είναι Συνδεδεμένοι Σέ Μία Σελίδα?
http://www.freestuff.gr/forums/viewtopi ... ng&t=19666

Άβαταρ μέλους
nikirtsi
Δημοσιεύσεις: 169
Εγγραφή: 02 Ιουν 2006 16:35

Επικοινωνία χρηστών(Web Clients) Μέ Κοινόχρηστες μεταβλητές

Δημοσίευση από nikirtsi » 02 Ιουν 2006 17:04

Ευχαριστώ Πολύ Γιά Τήν Άμεση Απάντηση , Αλλά Πρόσεξε Λίγο...
Αυτό Πού Μού Στέλνεις Σάν Link Αναφέρεται Σέ Χρήστες Βάσεως Δεδομένων...

Εγώ Δέν Θέλω Νά Μετρώ Πόσοι Είναι Συνδεδεμένοι Στήν Βάση Δεδομένων,
Σέ Αυτήν Άλλοστε Δέν Έχω Δηλώσει Λογαριασμούς Χρήστων Πέρα Τού Πληρεξουσιαστή.

Μέ Ενδιαφέρει Άν Υπάρχει Κάποιος Τρόπος Νά Δηλώσω Μεταβλητές Στήν php Οι Οποίες
Νά Είναι Κοινοπροσβάσιμες Από Όλους Τούς Χρήστες(Web Clients) ΤΗΣ ΣΕΛΙΔΟΣ.
Ακόμα και ο ήλιος, στό αριστερό μελίγγι μου ανατέλλει καί στό ζερβό δύει.

Άβαταρ μέλους
nikirtsi
Δημοσιεύσεις: 169
Εγγραφή: 02 Ιουν 2006 16:35

Επικοινωνία χρηστών(Web Clients) Μέ Κοινόχρηστες μεταβλητές

Δημοσίευση από nikirtsi » 02 Ιουν 2006 17:23

Παρατηρώντας Πιο Προσεκτικά Τών Κώδικα Σού Διακρίνω Πώς Γιά Τήν Επίτευξη Τού Ζητουμένου Χρησιμοποιείται Χρονοσφραγίδα Μέ Σκοπό Τόν Περιορισμό Χρονικός Τής Συνδέσεως....
Αυτό Όμως Δέν Είναι Τό Επιθυμητό Στήν Περίπτωσίν Μου.

Δέν Θέλω Νά Ακυρώνω Τήν Σύνδεση Ενός Λογαριασμού Μετά Από timestamp() + lifetime Χρονοδιάρκεια..

Νά Γίνω Πιό Σαφής...
Έχω Αναπτύξει Ένα Γνωσιολογικόν Σύστημα Έν ' Ονόματι Αριστοτέλης...
Τό Οποίο Απαίτει Αναγνωριστικό / ιστοποιητικό Γιά Τήν Σύνδεση Τών Πιστοποιημένων Χρηστών Αυτού.

Σέ Περίπτωση Πού Κάποιος Χρήστης Συνδεθεί Σέ Αυτό
Μέ Τόν Ατομικό Τού Λογαριασμό(Uid,Pid),
Άν Παραλλήλος Συνδεθεί Στόν Σύστημα Μέ Τόν Ίδιο Λογαριασμό Τότε Καί Κάποιος Άλλος , Τότε Ακυρώνεται Η Σύνδεσίς Του Πρώτου , Ενώ Εγώ Θέλω Νά Μήν Επιτρέπεται Η Σύνδεσις Τού Δευτέρου Στήν Εξής Περίπτωσι...

Χρήζιν Άμεσης Σοβαρότητας.....
Ακόμα και ο ήλιος, στό αριστερό μελίγγι μου ανατέλλει καί στό ζερβό δύει.

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Επικοινωνία χρηστών(Web Clients) Μέ Κοινόχρηστες μεταβλητές

Δημοσίευση από ThyClub » 03 Ιουν 2006 01:17

Απάντησα μόνο σε αυτό που έκανα quote.

Για το:
Άν Παραλλήλος Συνδεθεί Στόν Σύστημα Μέ Τόν Ίδιο Λογαριασμό Τότε Καί Κάποιος Άλλος , Τότε Ακυρώνεται Η Σύνδεσίς Του Πρώτου , Ενώ Εγώ Θέλω Νά Μήν Επιτρέπεται Η Σύνδεσις Τού Δευτέρου Στήν Εξής Περίπτωσι...
Γιατί δεν δοκιμάζεις να κάνεις αυτό που είπες εδώ:
Μία Ιδέα Υλοποίησης Αυτού Θά Ήταν Τήν Εξής Τιμή Νά Τήν Αποθήκευα Σέ Κάποια Βάση Δεδομένων ή Ακόμα Καί Σέ Ένα Αρχείο Καί Κατά Τήν Έξοδο Αυτού Νά Τήν ""Έσβηνα""".
αλλά με κάποια τεχνολογία τύπου AJAX να έσβηνες την τιμή όταν υπάρχει περίπτωση βίαιου τερματισμού.

Άβαταρ μέλους
shadow
Script Master
Δημοσιεύσεις: 606
Εγγραφή: 14 Απρ 2005 18:30

Επικοινωνία χρηστών(Web Clients) Μέ Κοινόχρηστες μεταβλητές

Δημοσίευση από shadow » 03 Ιουν 2006 01:22

Η βάση δεδομένων δεν είναι απόλυτο ότι πρέπει να αναφέρεται σε χρήστες εγγεγραμμένους. Τo timestamp ειναι μια καλή λύση γενικά.
Μια πρόχειρη ιδέα, ειναι να κρατας την ip του χρήστη (αν και σε αυτή την περίπτωση θα πρέπει να εξετάσεις και την περίπτωση να βρισκεται ο κάτοχος του λογαριασμού πίσω από proxy). Από την στιγμή όμως που εχεις αναγνωριστικά+ιστοποιητικό (btw τι ειναι αυτό? ) μπορείς να κρατας σε ενα πινακα σε βαση (or σε file) εγγραφες του τύπου (uid id timestamp session_id).
Οποτε συνδεεται ενας καινουριος χρηστης θα πηγαίνεις να ελεγχεις στην βαση σου εαν υπαρχει ηδη record που να περιεχει το uid/id και εαν υπαρχει θα πηγαινεις στην συνεχεια να βλεπεις εαν το timestamp ειναι εγκυρο. Τωρα ποιες θα ειναι οι περιπτώσεις οπου το timestamp σου δεν θα ειναι εγκυρο.

1. Αρχικά όταν το timestamp ειναι πολυ παλιό (για καποιο λογο δεν καταργήθηκε ειτε το session_id, ειτε το cookie αναλογα με το τι θα χρησιμοποιήσεις).
2. Εαν κρατάς όλες τις συνδέσεις για λόγους ιστορικότητας όταν το timestamp δεν ειναι valid(πχ μπορεις κατα την αποσύνδεση του χρηστη να πηγαίνεις και να δινεις στο timestamp μια ακυρη τιμή)

Για να μην εχεις το προβλημα να δωσεις περιορισμενη χρονικη διαρκεια στην σύνδεση των χρηστων θα πρεπει ανα τακτά χρονικά διαστήματα να κανεις update το timestamp των συνδέσεων or το update αυτό να γίνεται μετά από καθε κίνηση που κάνει ο χρήστης στο σύστημα σου.
Εαν υπαρχει ήδη χρηστης ο οποιος ειναι online τοτε ο δεύτερος χρήστης που προσπαθεί να συνδεθει, δεν θα συνδέεται και ετσι δεν υπαρχει κανενα προβλημα με την εισοδο του 2ου χρηστη. Εαν από την αλλη υπαρχει ήδη εγγραφη στο πινακα για τον χρηστη αλλα το timestamp δεν ειναι εγκυρο πας και πετας ενα update στο συγκεκριμενο record και εισαι οκ

Τα παραπάνω είναι καπως θεωρητικα, πάντως η γενική ιδέα νομίζω ότι καλύπτει αυτό που θες να κάνεις.. Good luck :D
Close your eyes
For your eyes will only tell the truth and the truth isnt what you want to see
In the dark, is it easy to pretend that the truth is it ought to be.
Programmers are programmers because they like to code

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Επικοινωνία χρηστών(Web Clients) Μέ Κοινόχρηστες μεταβλητές

Δημοσίευση από cpulse » 03 Ιουν 2006 03:01

Φίλτατε/η nikirtsi Έχω Την Εντύπωση Ότι Ο Διδάσκαλος Αριστοτέλης Θα Τα Έπαιρνε Εις Την Κράναν Αν Αντιλαμβανόταν Οτι Χρησιμοποιείς Το Όνομά Του Χωρίς Να Μελετάς Ενδελεχώς Τα Δοθέντα Σκριπτία Εις Τον Σύνδεσμον Που Παρέθεσε Ο ThyClub.

Υπάρχει Και Τρόπος Χωρίς Βάση Δεδομένων. Νομίζω Κατανόησα Την Ημετέραν Αξίωσην Δια Την Διατήρηση Διαγιουζερικών Μεταβλητών. Πιστεύω Ότι Μπορείς Να Βρεις Λύση Με Χρήση Πολυδιανυσματικών Πινάκων Τους Οποίους Μπορείς Εύκολα Να Αποθηκεύσεις Και Να Ανακτήσεις Με Τις Εντολές serialize() Και unserialize(). Το Κύριο Πρόβλημα Θα Εντοπιζόταν Στον Χώρο Της Αμεσότητας Της Επικοινωνίας Διότι Ως Γνωστών Οι PHP Σελίδες Παράγονται Εις Μίαν Και Μόνον Κόπια Κατά Την Αίτηση Από Τον Ιστοπεριηγητή. Η Συνήθης Τακτική Αντιμετωπίσεως Τοιούτων Προβλημάτων Είναι Η Χρήση Συχνής Ανανέωσης (Πόλς) Τα Οποία Είναι Εφικτά Είτε Μέσω Της HTML Σελίδος Είτε Με Την Μέθοδο Ajax Που Τα Κάνει Όλα Αόρατα.

Θερμές Ευχές Για Την Επιτυχία Της Προσπάθειάς Σου.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Επικοινωνία χρηστών(Web Clients) Μέ Κοινόχρηστες μεταβλητές

Δημοσίευση από cherouvim » 03 Ιουν 2006 09:37

Min grafete etsi giati me pianei zalada.

Afto pou theleis einai na valeis mia metavliti sto "application scope". Fysika kati tetio den yfistatai stin PHP, toulahiston sto aplo setup pou agorazoume se opiodipote hosting.

Mporeis na eksomioseis afti ti symperifora me ena database table, pithanos typou HEAP (memory).

Άβαταρ μέλους
nikirtsi
Δημοσιεύσεις: 169
Εγγραφή: 02 Ιουν 2006 16:35

Επικοινωνία χρηστών(Web Clients) Μέ Κοινόχρηστες μεταβλητές

Δημοσίευση από nikirtsi » 03 Ιουν 2006 19:26

Shadow....
Κοπελιά Μού Θαυμαστός Ο Τόσο Δομημένος Τρόπος
Έκφρασίς Τής Λογικότητας Σού.
Εκ ' Τών Αναφερομένων Σού , Συμφωνώ Απολύτος Ότι Είναι
Ο Καταλλιτότερος Τρόπος Επίτευξης Τού Επιθυμητού Αλλά Δημιουργεί
Τά Κάτωθι Μειονεκτήματα Πού Επιτυχώς Έθιξες :
α) Απαιτείται Ένας Σύνεχης Μηχανισμός Ελέγχου Καί Ενημερώσεως Τών Υπό
Συνδεδεδεμένων Χρηστών.
β) Βίαια Αποσύνδεσις Τού Χρήστη Κατακτρατή Τόν Ατομικό Λογαριασμού Αυτού
Σέ Κατάστασι Συνδέσεως Επί Χρονικού Διαστήματος Πού Είναι Ανάλογο
Τής Εποπτικής Δειγματολιπτικής Διεργασίας Τών Υπό Συνδεδεμένων Χρηστών.

Δέ Αύτων Όμως Είναι Μία Λύση.(Μέ Πολυπλοκότητα Αλλά Καί Μέ Μειονεκτήματα)
Χαίρομαι Γιά Τήν Παράθεσι Σού....


Cpulse....
Τό Πρόβλημα Δέν Είναι Πώς Θά Θεωρίσω Αποθηκευτικός Ώς Μοναδική
Τήν Κάθε Σύνδεση Τού Χρήστη.
(Χρησιμοποιώ Μονόδρομο Κρυπτογράφημα Κυκλικής Μαργαρίτας Αυθαίρετων Ακολουθιών Q,C
Τής Χρονοσφραγίδας Συνδέσεως Αυτού , Τού Md5 Τού Πιστοποιητικού Τού Χρήστη
Υπό Συνέλιξη Μέ Το Αναγνωριστικό Τού Καί Τό Αναγνωριστικό Τού Συνοδού.)

Τό Πρόβλημα Είναι Στήν Μή Αποθήκευση Αυτών Σέ Μόνιμή Αποθηκευτική Μονάδα
Διά Τούς Αναφερομένους Λόγους Πού Παρέθεσε Καί Η Αγαπητή Shadow
Καί Επισύμανές Εσύ...



Cherouvim
Μέ Κάλυψές Απολύτως...

Thy Club....
Ευχαριστώ Γιά Τήν Συμπαράστασιν...



Η Υλοποίηση Τού Αναφερομένου Υπερβαίνει Τήν Επιθυμητή Διάρκεια Υλοποίησις
Αλλά Καί Το Κόστος Αυτού, Τήν Χρησιμότητα Τού.
Επομένως Παραμένει Ανοικτό Ώς Πρόβλημα...
Ακόμα και ο ήλιος, στό αριστερό μελίγγι μου ανατέλλει καί στό ζερβό δύει.

Άβαταρ μέλους
shadow
Script Master
Δημοσιεύσεις: 606
Εγγραφή: 14 Απρ 2005 18:30

Επικοινωνία χρηστών(Web Clients) Μέ Κοινόχρηστες μεταβλητές

Δημοσίευση από shadow » 03 Ιουν 2006 21:12

nikirtsi έγραψε: Τά Κάτωθι Μειονεκτήματα Πού Επιτυχώς Έθιξες :
α) Απαιτείται Ένας Σύνεχης Μηχανισμός Ελέγχου Καί Ενημερώσεως Τών Υπό
Συνδεδεδεμένων Χρηστών.
β) Βίαια Αποσύνδεσις Τού Χρήστη Κατακτρατή Τόν Ατομικό Λογαριασμού Αυτού
Σέ Κατάστασι Συνδέσεως Επί Χρονικού Διαστήματος Πού Είναι Ανάλογο
Τής Εποπτικής Δειγματολιπτικής Διεργασίας Τών Υπό Συνδεδεμένων Χρηστών.
δεν είπα ότι είναι μειονέκτηματα, είναι ενέργειες που θα πρέπει να κάνει ο programmer για να φτάσει στο επιθυμητό αποτέλεσμα και να αντιμετωπίσει μεσα στο project του όλες τις δυνατές περιπτώσεις εκτέλεσης/ροής.
Close your eyes
For your eyes will only tell the truth and the truth isnt what you want to see
In the dark, is it easy to pretend that the truth is it ought to be.
Programmers are programmers because they like to code

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Επικοινωνία χρηστών(Web Clients) Μέ Κοινόχρηστες μεταβλητές

Δημοσίευση από cpulse » 03 Ιουν 2006 22:27

Σοβαρά τώρα.. γιατί γράφεις έτσι; Έχει πολύ γέλιο :lol: επιτρέπεται εσυ ένας "Βασίλη ζούμε για να σ' ακούμε" (το συμπεραίνω από την υπογραφή σου) να μιλάς τοιουτοτρόπως!;

Λοιπόν το είχα πάρει λίγο στα αστεία το thread... η βίαια αποσύνδεση δεν γίνεται αντιληπτή γιατί μιλάμε για browsers. Ίσως να είχες καλύτερη τύχη σε όλο αυτό το πρόβλημα με κάποιο Flash ή Java Applet με κανονικά TCP/IP connections. Όσο βρισκόμαστε στους browsers μπορείς μόνο να ανιχνέψεις την αποσύνδεση με κάποια μορφή ping. Από την πλευρά του χρήστη να υπάρχει μια σελίδα με frames, είτε κλασσικά frames είτε iframes, ένα εκ των οποίων να είναι η κανονική σελίδα και ένα άλλο να κάνει συχνά refresh για να λέει στον server οτι είναι ακόμα εκεί. Μετά θα πρέπει να υπάρχει από την πλευρά του server ένα άλλο ping το οποίο όταν βλέπει χρονοσφραγίδες γηραιότερων πχ των 2 δευτερολέπτων να θεωρεί οτι ο χρήστης αποσυνδέθηκε. Κι όλα αυτά αν οπωσδήποτε δεν θέλεις να καταχωρούνται σε αρχεία τότε σκέψου την δημιουργία είτε κάποιου daemon είτε κάποιου PHP script που όμως θα τρέχει σε CLI για να μην κάνει ποτέ timeout. Μόνο έτσι μπορούν τα δεδομένα να μένουν στην μνήμη αντί για αρχεία. Αυτά όμως θέλουν root access κι αν όμως δεν διαθέτεις τέτοια πλεονεκτήματα σκέψου κάποιο υποκατάστατο με έναν δικό σου υπολογιστή να παίζει εικονικά το ρόλο του server, για να μην μένουν αρχεία στον κανονικό server. Επίσης υπάρχει η ιδέα των πολλαπλών servers, κάτι που χρησιμοποιούν τα bittorrents. Ψάξε τα λίγο στο net και θα δεις πως λειτουργούν.

:pint:

Απάντηση

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

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

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