kostenloser Webspace werbefrei: lima-city


Socket Server

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    profilezz

    profilezz hat kostenlosen Webspace.

    Hallo Leute,

    wie der Titel scho sagt, es geht um einen Socket Server - mit PHP - um einen Chat zu realisieren.
    da ja HTML5 Sockets unterstützt, wollte ich - sei es sinnvoll oder nicht - nen chat bauen.

    meine Probleme dabei ->

    wie kann ich dem Server irgendwie die Session ID des User mitteilen bzw kann er mit den session variablen irgendwie umgehen, ohne jedesmal per session_id($id) die aktuelle session zu ändern (falls das überhaupt so funktioniert wie ich mir das vorstelle)

    und 2tens weiß ich nicht wie ichs schaffen soll, mehrere private chats erstellen zu können, also räume, die ein user aufmachen und wieder schließen kann und eben andere user einladen kann.

    bin für jeden hinweiß, tipp oder codeschnipsel dankbar ;)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Sockets über PHP sind eine ganz böse Idee, die Sprache ist dafür absolut ungeeignet, da sie synchron ist. Nutzte dafür eine asynchrone Sprache, wie JavaScript. Dies bietet sich insbesondere an, da du JS wahrscheinlich auch so schon kannst und NodeJS ein sehr gutes Interfaces für JS-Server bietet. Ein WebSockets-Modul ist vorhanden.
  4. Autor dieses Themas

    profilezz

    profilezz hat kostenlosen Webspace.

    hm, danke für den Tipp, werde mich da mal ein bisschen einlesen ;D

    i-welchen Tutorials die du empfehlen kannst?

    edit: funktioniert das auch hier auf lima-city?

    Beitrag zuletzt geändert: 17.11.2010 20:30:40 von profilezz
  5. t*****b

    nikic schrieb:
    Sockets über PHP sind eine ganz böse Idee, die Sprache ist dafür absolut ungeeignet, da sie synchron ist. Nutzte dafür eine asynchrone Sprache, wie JavaScript. Dies bietet sich insbesondere an, da du JS wahrscheinlich auch so schon kannst und NodeJS ein sehr gutes Interfaces für JS-Server bietet. Ein WebSockets-Modul ist vorhanden.


    Wieso, PHP muss ja nicht über Apache aufgerufen werden, sondern kann in der Kommandozeile laufen. Voraussetzung dafür ist natürlich ein Root-Server. Für einen Chat reicht allerdings, wie du gesagt hast, Ajax vollkomen aus.
  6. Autor dieses Themas

    profilezz

    profilezz hat kostenlosen Webspace.

    trueweb schrieb:
    Für einen Chat reicht allerdings, wie du gesagt hast, Ajax vollkomen aus.


    von Ajax war hier aber nicht die Rede ;)

    Ajax behersche ich auch, nur is das völlig ungeeignet für einen chat.
    für nen (richtigen) chat is ein socket fast unumgänglich.

    Beitrag zuletzt geändert: 17.11.2010 21:09:21 von profilezz
  7. t*****b

    profilezz schrieb:
    trueweb schrieb:
    Für einen Chat reicht allerdings, wie du gesagt hast, Ajax vollkomen aus.

    von Ajax war hier aber nicht die Rede ;)


    Sorry, mein Fehler.

    profilezz schrieb:
    Ajax behersche ich auch, nur is das völlig ungeeignet für einen chat.
    für nen (richtigen) chat is ein socket fast unumgänglich.


    Für einen Chat reicht Ajax vollkommen aus. Außerdem würde ich mich noch nicht 100%ig auf die Socketunterstützung von HTML5 der Browser verlassen.
  8. Autor dieses Themas

    profilezz

    profilezz hat kostenlosen Webspace.

    trueweb schrieb:
    Für einen Chat reicht Ajax vollkommen aus. Außerdem würde ich mich noch nicht 100%ig auf die Socketunterstützung von HTML5 der Browser verlassen.


    für einen kleinen chat mag das ja stimmen, aber für einen größeren, der dann auch noch möglichst realtime sein sollte, is ajax ned wirklich geeignet ;)

    und ob die Browser den HTML5 Socket unterstützen oder nicht, ist mir zurzeit eigentlich ned so wichtig, da es mir vorerst mal um den Socket-Server geht ;D
  9. @profilezz: Nein, NodeJS kannst du hier nicht benutzen, du benötigst einen eigenen Server. Übrigens, Ajax über Long Polling ist für Chats durchaus geeignet (alle online Chats basieren darauf). Aber PHP als Backendsprache ist auch hierfür sinnfrei.
  10. nikic schrieb:
    @profilezz: Nein, NodeJS kannst du hier nicht benutzen, du benötigst einen eigenen Server. Übrigens, Ajax über Long Polling ist für Chats durchaus geeignet (alle online Chats basieren darauf). Aber PHP als Backendsprache ist auch hierfür sinnfrei.

    Da PHP ziemlich einfach ist, ist es nicht sooo sinnfrei.
    Wer nun mal gut PHP kann und keine Lust hat sich in was anderes einzulesen, warum nicht.
    Mit PHP ist es durchaus möglich einen eigenen Webserver zu schreiben, oder ein Windows Desktop Programm.
    Allerdings habe ich keine Erfahrungswerte, was die Laufzeit angeht, also wie flott PHP ist. Aus deinem Post geht jetzt leider nicht hervor, ob du es auf Grund der Laufzeit als "sinnfrei" bezeichnest. Wenn es der Fall sein sollte, dann versteh den Post als Nebeninformation. ;-)
  11. @lucas9991: Als sinnfrei bezeichne ich, für diesen Zwecke eine synchrone und blockende Programmiersprache zu nutzen. Für jeden Benutzer des Chats benötigst du mindestens einen PHP-Prozess. Damit ist die Anzahl möglicher Nutzer sehr begrenzt, insbesondere wenn du bedenkst, dass du wahrscheinlich noch andere Seite außerhalb des Chats hast. Bei NodeJS brauchst du hingegen nur einen einzigen Prozess für alle User, die Anzahl der Verbindungen ist nahezu unbegrenzt.
  12. nikic schrieb:
    @lucas9991: Als sinnfrei bezeichne ich, für diesen Zwecke eine synchrone und blockende Programmiersprache zu nutzen. Für jeden Benutzer des Chats benötigst du mindestens einen PHP-Prozess. Damit ist die Anzahl möglicher Nutzer sehr begrenzt, insbesondere wenn du bedenkst, dass du wahrscheinlich noch andere Seite außerhalb des Chats hast. Bei NodeJS brauchst du hingegen nur einen einzigen Prozess für alle User, die Anzahl der Verbindungen ist nahezu unbegrenzt.

    Kurze Frage vorne weg:
    Was meinst du mit "blockende Programmiersprache"?

    Man kann in PHP auch Threading nutzen. http://www.phpclasses.org/package/4082-PHP-MultiThreading-like-Functionality-in-PHP-Win-nix-.html
    Wie effektiv im Bezug auf die Schnelligkeit und auch an die Anzahl der Clients PHP da ist, kann ic haber nicht beurteilen.
    Ich könnte mir nur vorstellen, dass es durchaus möglich ist, es auch in PHP zu realisieren.
    Z.B. noch in Verbindung mit HipHop http://developers.facebook.com/blog/post/358 etc.

    Hat wer Lust das mal auszuprobieren? Würde mich echt mal interessieren. :-)

    Gruß Lucas

    edit:
    Wie trueweb schon sagte, sollte das Skript über die Kommandozeile laufen.

    Beitrag zuletzt geändert: 19.11.2010 20:37:17 von lucas9991
  13. lucas9991 schrieb:
    Kurze Frage vorne weg:
    Was meinst du mit "blockende Programmiersprache"?

    Ein Hendiadyoin.

    Man kann in PHP auch Threading nutzen. http://www.phpclasses.org/package/4082-PHP-MultiThreading-like-Functionality-in-PHP-Win-nix-.html
    Wie effektiv im Bezug auf die Schnelligkeit und auch an die Anzahl der Clients PHP da ist, kann ic haber nicht beurteilen.
    Ich könnte mir nur vorstellen, dass es durchaus möglich ist, es auch in PHP zu realisieren.
    Z.B. noch in Verbindung mit HipHop http://developers.facebook.com/blog/post/358 etc.

    Ich verstehe nicht recht, was Pseudo-Multi-Threading über pcntl oder sonst was hier hilfreich ist. Mein Problem ist, dass man in PHP einen Prozess pro Verbindung benötigt. Und die Anzahl der Prozesse ist hier sehr schnell der begrenzende Faktor.
    Was ich ndas mit Hipoch weniger verstehe ist, was das mit HipHop zu tun hat. Ja, HipHop ist von Facebook, aber das macht es noch nicht 42.

    Beitrag zuletzt geändert: 19.11.2010 21:00:25 von nikic
  14. nikic schrieb:
    [...]
    Ich verstehe nicht recht, was Pseudo-Multi-Threading über pcntl oder sonst was hier hilfreich ist. Mein Problem ist, dass man in PHP einen Prozess pro Verbindung benötigt. Und die Anzahl der Prozesse ist hier sehr schnell der begrenzende Faktor.
    Was ich ndas mit Hipoch weniger verstehe ist, was das mit HipHop zu tun hat. Ja, HipHop ist von Facebook, aber das macht es noch nicht 42.

    Durch das Pseudo-Multi-Threading wollte ich dir zeigen, wie man es vermeiden kann, dass für jede Verbindung ein Prozess gestartet wird.
    Ich vermute du hast das Konzept, was ich versucht habe zu erklären, nicht ganz verstanden:
    - man schreibt ein PHP Script
    - dieses PHP Script hat eine Endlosschleife
    - das Script wird lokal per Konsole aufgerufen, d.h. es läuft als prozess völlig eingeständig und wird erst gestoppt, wenn man den Prozess killt
    - in diesem Script wird auf eine Port gehorcht, ob darüber eine Verbindung reinkommt
    - wenn ja, wird ein neuer Thread gestartet, der dann iwas macht
    - wenn der Thread abgearbeitet ist, wird das Resultat zurückgegeben
    -wenn keine Verbindung reinkommt, wird weiter auf eine Verbindung gewartet

    HipHop war nur ein Beispiel, wie die Effizienz des Scriptes noch weiter verbessert werden könnte.
  15. Ah, jetzt verstehe ich zumindest, was du meinst. Wirkt dennoch verrückt irgendwas langsames mit PHP zusammenzuhacken, wenn es NodeJS gibt, was genau dafür geschaffen ist.
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!