Επιλογή Chat συστήματος βάσει αυτών των αναγκών και δυνατοτήτων

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

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

Απάντηση
Άβαταρ μέλους
philos
Δημοσιεύσεις: 260
Εγγραφή: 30 Αύγ 2007 23:32

Επιλογή Chat συστήματος βάσει αυτών των αναγκών και δυνατοτήτων

Δημοσίευση από philos » 09 Ιούλ 2017 10:22

Καλημέρα :D

Θα ήθελα τις προτάσεις σας με βάση τις συγκεκριμένες δυνατότητες και ανάγκες, σχετικά με την επιλογή μιας πλατφόρμας Chat.

Ανάγκες
- Ψάχνω για μια πλατφόρμα chat στην οποία οι χρήστες ανταλλάσσουν τα προσωπικά μηνύματα σε popup παράθυρο και όχι με εντολές στο κεντρικό κανάλι.
- Πρέπει να μπορεί να γίνει εύκολα integration (σύνδεση χρηστών) με μηχανές forum (vBulletin)
- Να μην είναι καθόλου σε flash (ξεπεράστηκε)
- Να μπορεί να γίνει εύκολα edit το design/template και κατά βάσην να έχει κάτι το μαζεμένο/minimal αλλά να είναι και επαγγελματικό, όχι κανένα με φλου εμφάνιση
- Τέλος, στο site υπάρχει κι ένα AJAX shoutbox (PHP/MySQL), όπου θέλω να δημοσιεύονται κι εκεί τα μηνύματα (έτσι οι χρήστες επικοινωνούν και χωρίς να μπουν στο Chat). Αυτό υπάρχει ήδη. Οπότε χρειαζόμαστε μια μηχανή που να μπορώ κατά το post ενός μηνύματος, να στείλω τα δεδομένα και στον πίνακα του shoutbox.
- Να μπορεί να σηκώσει στον server 17 - 20 χρήστες online στο chat (ξέρω είναι σχετικό αυτό αλλά μιλάμε για περίπτωση hosting του chat στον ίδιο server με το site)

Οι γνώσεις μου περιορίζονται σε PHP/MySQL/HTML/CSS/JavaScript/JQUERY.
Έχετε να προτείνετε κάποια πλατφόρμα chat που μπορεί να ταιριάξει σε μένα;

Τέλος, τι γνώμη έχετε για το AJAX Chat;
- Μπορώ να σηκώσω 20 χρήστες με αυτό;
Με αυτό, μιας που γνωρίζω τις τεχνολογίες ανάπτυξής του:
- Δεν διαθέτει popup private messages αλλά μπορώ να το αναπτύξω
- Μπορώ να τροποποιήσω τον κώδικα του shoutbox ώστε να το βασίσω στον πίνακα των μηνυμάτων του AJAX Chat κι άρα να μην υπάρχουν διπλά queries κατά το ποστάρισμα μηνυμάτων
- Δεν είναι flash
- Έχει HTML/CSS οπότε μπορώ να κάνω ό,τι θέλω με το layout
- Διαθέτει ήδη integrated έκδοση με το vBulletin

Κάθε ιδέα ευπρόσδεκτη. :-)

redor
Δημοσιεύσεις: 5
Εγγραφή: 22 Αύγ 2017 12:26

Re: Επιλογή Chat συστήματος βάσει αυτών των αναγκών και δυνατοτήτων

Δημοσίευση από redor » 22 Αύγ 2017 13:20

Short answer:
Λάθος γλώσσα για την πραγματική επίλυση αυτού του προβλήματος σε λάθος εποχή.

Long answer:
Ναι φυσικά μπορείς να έχεις ένα “chat” με Ajax. Απλά τα εισαγωγικά γύρω από την λέξη chat θα έπρεπε να είναι πολλά και οι πόροι του συστήματος που θα χρησιμοποιούσες αχρείαστα πολλοί. Το μόνο που με κρατάει από το να σου γράψω “ούτε καν να το σκέφτεσαι” είναι το πλήθος των χρηστών που λες ότι αναμένεις να έχει αυτό το “σύστημα”. Αν όντως μιλάμε για δέκα το πολύ είκοσι χρήστες τότε χαλάλι τα recourses , χωρίς αυτό να λύνει το θέμα ότι δεν είναι chat αλλά (όπως ήδη έγραψα , αλλά θέλω να δώσω έμφαση) chat με πολλά εισαγωγικά.

Πριν από μια δεκαετία υπήρχαν διάφοροι μηχανισμοί για την επίλυση αυτών των θεμάτων που ο καθένας από αυτούς ήταν κάπου ανεπαρκής (π.χ. βλέπε long polling ). Η λύση συζητιόταν για χρόνια και ήταν απλή: WebSockets . Τουλάχιστον από το '12 (που ξέρω ότι τα δικά μου tests έβγαλαν ότι οι browsers είναι έτοιμοι για τα WebSockets με σχεδόν ίδια υλοποίηση) η λύση αυτή είναι γεγονός browser / client side.

Παρ' όλα αυτά πέντε χρόνια μετά η χρήση των WebSockets είναι περιορισμένη όχι λόγω front end θεμάτων αλλά αποκλειστικά λόγω back end. Δεν θα μιλήσω για τις υπόλοιπες γλώσσες αλλά στην PHP η περιορισμένη χρήση έχει να κάνει με την φύση της PHP και με τους προγραμματιστές PHP.

Για να έχεις έναν αποτελεσματικό WebSocket server χρειάζεσαι threads. Η PHP στον πυρήνα της μια χαρά λειτουργεί σε threads αλλά τα implementation αυτής της συμπεριφοράς ( pthreads με make thread safe ) δεν έχουν σχεδόν τίποτα που να τα καθιστούν χρήσιμα προς την επίλυση αυτού του θέματος (object sharing , mutex – mutual exclusion – etc). Αυτό δεν έχει γίνει τυχαία (ή από λάθος) αλλά είναι μια μεγάλη κουβέντα στον πυρήνα της PHP του μέχρι ποιες δυνατότητες μπορεί να δώσει η γλώσσα στου προγραμματιστές της , συνεχίζοντας να θεωρείται σχετικά safe (και άρα καλή εμπορική επιλογή) σε μη dedicated servers και hosting περιβάλλοντα.

Σήμερα (Αύγουστος 20017) υπάρχουν κάποιες λύσεις για χρήση WebSockets σε PHP που μπορεί να είναι προβληματικές εκ φύσεως αλλά δουλεύουν και είναι δοκιμασμένες (π.χ. Ratchet , μπορείς και να googlάρεις “ratchet chat example” ) . Φυσικά στην ουσία είναι άχρηστες για πραγματικές συνθήκες παραγωγής καθώς απαιτούν ή να μην έχεις οτιδήποτε blocking (π.χ. η σύνδεση ή το γράψιμο σε μια βάση είναι blocking) ή να κάνεις το δικό σου implementation parallel processing (που ΔΕΝ ΕΙΝΑΙ threads) (ή να αντιγράψεις κάποιο που ήδη υπάρχει) που θα έχει το κόστος της επανέναρξης της εφαρμογής χωρίς κανένα όφελος. Επίσης η λογική ότι επειδή δεν χρησιμοποιώ blocking μηχανισμούς ως server στην αποστολή ή στην λήψη δεδομένων μπορώ να κάνω ταυτόχρονα πολλές λειτουργίες δεν στέκει σε μια εφαρμογή που τρέχει σε ένα thread.

Conclusion:
Επειδή μιλάς για πολύ λίγους χρήστες θα μπορούσες να παραβλέψεις τα αχρείαστα recourses τόσο back end όσο και front end , που θα κατανάλωνες και να πας με μια AJAX λύση , το θετικό είναι ότι δεν έχεις να μάθεις τίποτα νέο το αρνητικό είναι ότι δεν μιλάμε για chat αλλά για “chat”.
Επίσης επειδή μιλάς για πολύ λίγους χρήστες μπορείς να δοκιμάσεις κάποιο υπάρχων implementation των websockets σε PHP χωρίς threads με ή χωρίς parallel processing. Το αρνητικό εδώ είναι ότι δεν μπορείς να “σηκώσεις” πολλούς χρήστες (αλλά μάλλον πάνω από 20) και το θετικό είναι ότι μιλάμε για πραγματικό chat.

Απάντηση

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

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

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