php.de

Zurück   php.de > Webentwicklung > Server, Hosting und Workstations

Server, Hosting und Workstations Server-Konfigurationsdateien (.htaccess/httpd.conf) und Arbeiten auf Serverebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.01.2010, 21:37  
stebi
Gast
 
Beiträge: n/a
Standard Persistente Verbindung vs. AJAX-Request

Hi Leute,

über die Feiertage ist mir die Idee zu eine Echtzeit-Webanwendung mit den Techniken JavaScript, PHP, MySQL gekommen. Dabei sollen jeweils zwei Leute gegeneinander ein Brettspiel austragen können (Mühle z.B.).
Das Problem ist jetzt, dass beide Browser in Echtzeit synchronisiert werden müssen. Ich weiß, dann sollte ich JAVA oder FLASH benutzen, aber das kann und möchte ich nicht

Bei meinen Überlegungen sind mir zwei grundlegende Umsetzungen in den Sinn gekommen.

1. AJAX - Per JavaScript holen sich die Browser jede Sekunde (oder auch öfter) aktualisierte Daten vom Server.

2.) Im Browser wird über eine persistente Verbindung (i.Frame oder so) offengehalten, in denen ein PHP-Script fortlaufend die Daten "flusht" und diese dann wiederum von JavaScript ausgelesen werden.

Meine Frage ist jetzt, was haltet ihr als die bessere Lösung von der Performance her? Pro Client bräuchte ich also drei Serverressourcen: PHP, Apache, MySQL.
Falls jemand eigene Erfahrungswerte von Anzahl Clientverbindungen je "normalem" Root-Server nennen kann, würde ich mich auch freuen (PI mal Fensterkreuz).
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.01.2010, 22:35  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.991
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
aber das kann und möchte ich nicht
Dein gutes Recht. Ich hoffe Du gestehst uns das selbe Recht zu, was Antworten auf Deinen Thread anbelangt.

Wart mal, ich kram nochmal den Spruch des Tages heraus…

Zitat:
Zitat von Wolla
Du versuchst, mit einem Fiat 500 einen Möbeltransport zu organisieren und willst, dass die Heckklappe sich dann automatisch öffnet, wenn im Kofferraum jemand klavierspielt.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 04.01.2010, 23:43  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Pro Client brauchst du eigentlich nur einen Webbrowser.

Wenn du das ganze als Spassprojekt starten willst, das keine hohe Zahl an gleichzeitigen Spielen verkraften muss, kannst du im Prinzip nach jeder Antwort gleich schon die nächste Anfrage stellen. Andernfalls wurde deine Frage, weitgehend wie von nikosch im Bezug auf AJAX CHAT schon massenhaft besprochen.
Chriz ist gerade online   Mit Zitat antworten
Alt 04.01.2010, 23:43  
stebi
Gast
 
Beiträge: n/a
Standard

Hm, Autovergleiche waren im IT-Bereich schon immer unpassend, aber ehrlichgesagt, habe ich solch eine Antwort "erwartet".

Es ist ja nicht so, dass es technisch nicht funktioniert. Ich könnte sogar eine Referenzseite mit ziemlich vielen Benutzern angeben.

Mich interessiert eigentlich nur das technische Pro und Contra zu den _beiden_ vorgestellten Lösungen.
  Mit Zitat antworten
Alt 04.01.2010, 23:47  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.991
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Also schon rein gefühlsmäßig gruselt mich die Vorstelllung von einer Seite mit einem permanent ladenden Iframe.. Aber das ist bestimmt keine gültige Argumentation.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 04.01.2010, 23:48  
stebi
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Pro Client brauchst du eigentlich nur einen Webbrowser.
Genau darum geht es mir, es soll nur mit einem nackigen Browser spielbar sein.

Zitat:
Zitat von Chriz Beitrag anzeigen
Wenn du das ganze als Spassprojekt starten willst, das keine hohe Zahl an gleichzeitigen Spielen verkraften muss, kannst du im Prinzip nach jeder Antwort gleich schon die nächste Anfrage stellen. Andernfalls wurde deine Frage, weitgehend wie von nikosch im Bezug auf AJAX CHAT schon massenhaft besprochen.
Ja, ist ähnlich der "Chat-Problematik". Da gibt es einmal "Lösungen" mit Refresh/Reload und mit "ewig nachladendem Content".
Und das war ja jetzt meine ursprüngliche Frage. Worauf setzen?
  Mit Zitat antworten
Alt 05.01.2010, 00:02  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Vorrausgesetzt Browser, Webserver und php funken dir bei variante b) nicht wegen irgendwelcher timeouts, max_execution_time oder ähnlichem dazwischen, wäre das wohl theorhetisch die resourcenschonendste Variante.

In der Praxis wichtig ist bei variante B vor allem dass du mit PHP: connection_aborted - Manual immer überprüfst ob der User seinen Browser geschlossen hat, PHP: ignore_user_abort - Manual deaktiviert ist UND du in irgendeiner Form ein Noop-Command implementierst, sonst hast du in null komma nix massenweise zombie-scripte die in einer endlos-schleife laufen.

Ausserdem sehr wichtig dass das komplette script immer in der schleife sauber alle resourcen wieder freigibt, sonst steigt auf die dauer der Speicherverbrauch ins unermessliche oder das script stirbt am memory-limit.

So oder so, solltest du auch bei variante b) es nicht übertreiben und nach möglichkeit um auf nummer sicher zu gehen und zu hohen ram-verbrauch zu vermeiden alle X minuten die einzelne verbindung neu aufbauen und etwas einbauen das von Javascript-Seite aus ein sterben des Scripts erkennt (fehlendes regelmäßiges noop oder ähnliches)

Bei variante a) würdest du mit zu vielen Requests/zeit bei einer ausgelasteten Verbindung oder einem ausgelasteten Server irgendwann auch Probleme mit der anzahl der maximalen offenen Verbindungen zum server (browser-einstellung) haben und der Maximalen Anzahl an Verbindungen des Servers [insgesamt und pro client/ip] (selbst wenn die Requests recht kurz sind, kommt dazu ja immer noch aufbau/abbau der verbindung, was den apachen auch aufwand kostet, etc und daher ein request für den apache länger dauert)

Variante a) könnte abhängig von Konfiguration der Firewall und/oder eventuellen DDOS-Abwehrmodulen (apache mit mod_evasive) auch dazu führen, dass der User irgendwann gesperrt wird.

Alles in allem würde ich jedoch wie alle anderen von solchen Sachen abraten, gerade wenn man einen root-server hat, gibt es diverse andere Lösungen die performanter und resourcenschonender sind.
robo47 ist offline   Mit Zitat antworten
Alt 05.01.2010, 00:12  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von stebi Beitrag anzeigen
Ja, ist ähnlich der "Chat-Problematik". Da gibt es einmal "Lösungen" mit Refresh/Reload und mit "ewig nachladendem Content".
Und das war ja jetzt meine ursprüngliche Frage. Worauf setzen?
Habe ich keine Erfahrung darin, aber wenn du es rausfindest lass es uns wissen, dann pingen wir den Thread oben fest

Ich meine welche Reaktionszeit erwartest du beim Spielen mit jemandem den du nicht siehst? Da ist es eigentlich egal ob man ein oder zwei Sekunden länger warten muss als es tatsächlich gedauert hat. Probiers doch erstmal mit der offenen Verbindung, wenn du dir um Ressourcen keine Sorgen machst.
Chriz ist gerade online   Mit Zitat antworten
Alt 05.01.2010, 10:32  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

Das Zauberwort sind hier sockets, du findest freie libs. um mit JS sockets nutzen zu können, intern wird dies mit Flash realisiert.

dann schreibst du, worin auch immer einen socketserver mit dem der client kommuniziert. Meine Wahl wäre hier zwar nicht php, sollte jedoch auch funktionieren.

sauber wirst du es mit php wohl nich lösen können, gehen tut es jedoch....

// edit

ich bin mir nicht ganz sicher, aber vielleicht könnte man sogar memcache für den datentransfer unter php missbrauchen.
notyyy ist offline   Mit Zitat antworten
Alt 05.01.2010, 12:34  
stebi
Gast
 
Beiträge: n/a
Standard

Danke für euren Input!

Dank notyyy tendiere ich jetzt zu der neuen Variante c) mit Sockets über eine Flash-Bridge. Habe dazu schon eine Implementation mit PHP-Deamon gefunden, sieht ganz vielversprechend aus. Werde mich damit mal am Wochenende auseinandersetzen.

XMLSocket :: F.A.Q & API
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fileupload via AJAX GSJLink HTML, Usability und Barrierefreiheit 13 17.05.2012 21:41
[Erledigt] Umlaut Problem in ajax Request da.eXecutoR JavaScript, Ajax und mehr 1 28.11.2009 12:21
[Erledigt] Ajax response in variable Buschdieb JavaScript, Ajax und mehr 13 22.11.2009 12:33
Wie lade ich ein Javascript nach einer AJAX Abfrage neu? da.eXecutoR JavaScript, Ajax und mehr 3 21.09.2009 11:15
[Erledigt] AJAX interpretRequest läuft nur mit alert() Buschdieb JavaScript, Ajax und mehr 14 26.08.2009 14:04
Lauftext nach ajax request ?!?! 8eww JavaScript, Ajax und mehr 11 25.04.2009 12:41
[Erledigt] Ajax Request Datei nicht direkt öffnen Heinerlutscher JavaScript, Ajax und mehr 5 02.03.2009 18:10
[Erledigt] Datei via Ajax in zwei Boxen laden Lenni.B JavaScript, Ajax und mehr 4 25.02.2009 11:28
1111: AJAX meets PHP (indirectly) Nikolaus 2.0 Adventskalender 2008 5 15.12.2008 11:00
MySQL verbindung TeazY PHP Tipps 2008 2 18.12.2007 14:34
AJAX: Session-Inhalt an PHP Curanai HTML, Usability und Barrierefreiheit 2 05.11.2007 15:45
innerHTML funktioniert nicht bei AJAX request Plague HTML, Usability und Barrierefreiheit 1 21.12.2006 14:30
persistente MySQL Verbindung und clonen HStev PHP-Fortgeschrittene 16 22.11.2005 13:24
persistente Verbindung + egene klasse bark PHP Tipps 2005-2 6 10.10.2005 18:33
Persistente Verbindung! Datenbanken 2 17.06.2004 13:18

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
javascript persistente verbindung, ajax verbindung, ajax persistente verbindung, ajax offene verbindung, ajax brettspiel, ajax request dauerhafte verbindung, ajax persistent, ajax php apache warten, php script laufzeit limit ajax, ajax verbindungen, ajax request jede sekunde, php vs ajax, zend framework persistente mysql verbindung, ajax socket, echtzeit webanwendung, ajax request schleife, ajax in verbindung mit flash, ajax-verbindungen, iframe php socket, ajax and persistent scripts

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:55 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum