Portal > Foren > PHP > PHP-Programmierung > PHP Event-Handler
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 01.07.2006, 18:30 Nach oben    #1
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard PHP Event-Handler

Tag,
nun, ich weiß ja dass das komplette HTTP und Server getue statuslos ist, und somit sog. Event-Handler nicht realisiert werden können, dafür gibts ja dann Java und Co. Nun wäre so ein onEvent aber ganz interessant in PHP, gibt es irgendein workarount dafür?

Das ganze zielt auf ein Client onEvent-Handler hin, d.h. das Script tut nichts solange vom Client nichts kommt. Trudelt ein Request ein (in dem Fall eine vom User geschriebene Nachricht), merkt das Script dies und fäng eben zu arbeiten an. Ziel ist, dass das Script zwar läuft und auch bestimmte Aktionen durchführt - aber erkennt, sobald ein User etwas schreibt, also quasi darauf wartet.

Wäre soetwas über sockets möglich? (habe da mal was von einem Socket-listener gehört)?
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 19:01 Nach oben    #2
Jay
Gast
 
Beiträge: n/a
Standard

JavaScript? Wie sollen Sockets helfen?
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 19:02 Nach oben    #3
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Achja, javascript hatte ich vergessen zu erwähnen. Das möchte ich aber nich aus Kompatibilitätsgründen bzw man kann das ja abschalten.

Wie sockets helfen sollen weiß ich nich genau, kann man die nicht irgendwie hören lassen (listen)?
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 19:30 Nach oben    #4
Master of Disaster
 
Benutzerbild von Matthias959
 
Registriert seit: 18.08.2005
Ort: Duisburg
Beiträge: 36
Standard

Schau dir doch mal einen in PHP geschriebenen IRC-Bot an.
Der macht doch eigentlich auch nichts anderes, als auf eine bestimmte Aufgabe warten.

Wenn ich mich nicht täusche hört der die ganze Zeit auf einen bestimmten Port.

Gruß
Matthias
__________________
Matthias959 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 20:22 Nach oben    #5
Jay
Gast
 
Beiträge: n/a
Standard

Das ganze ist __serverseitig__ ! Um auf Ereignisse, die im Browser ablaufen reagieren zu können, benötigst du eine clientseitige Technologie.

Zitat:
Zitat von Chr!s
Das möchte ich aber nich aus Kompatibilitätsgründen bzw man kann das ja abschalten.
Na und. Jeder verwendet JavaScript. Du solltest es halt so machen, dass die Grundfunktionen auch ohne JavaScript funktionieren. JavaScript ist ein wichtiger Bestandteil, wenn nicht der wichtigste Bestandteil des Web 2.0!
Wer noch immer glaubt JavaScript sei was für Scriptkiddies und Unwissende, hat das Web IMO nicht verstanden.

EDIT:
Btw:
Zitat:
nun, ich weiß ja dass das komplette HTTP und Server getue statuslos ist, und somit sog. Event-Handler nicht realisiert werden können, dafür gibts ja dann Java und Co. Nun wäre so ein onEvent aber ganz interessant in PHP, gibt es irgendein workarount dafür?
Wenn du das weißt, wieso fragst du dann?
Eventhandler können schon realisiert werden, nur eben nicht clientseitig sondern serverseitig.

Jay

Geändert von Jay (01.07.2006 um 20:25 Uhr)
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 20:24 Nach oben    #6
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 540
Standard

das geht schon, dann musst du dein php script halt als applikation auf dem server laufen lassen und inner endlosschleife auf socket connections warten.

aber da fehlt imho komplett der sinn dahinter - für sowas gibt es weitaus bessere lösungen arrow:java-servlets). php ist als scriptsprache nunmal für einfache handhabung konzipiert, ohne auf komplexere strukturen für seitenaufrufe einzugehen.
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 20:27 Nach oben    #7
Jay
Gast
 
Beiträge: n/a
Standard

Zitat:
java-servlets
Ich hab zwar keine Ahnung von java-serverlets. Ich wage es aber zu bezweifeln, dass diese auf clientseitige Ereignisse im Browser reagieren können. Schließlich machen die ja auch nix anderes als PHP, ASP.NET oder Ruby On Rails.

Ansonsten zeig doch mal ein Codebeispiel, mit serverseitigen Code und dem kompletten Output.

EDIT:
Zitat:
das geht schon, dann musst du dein php script halt als applikation auf dem server laufen lassen und inner endlosschleife auf socket connections warten.
Geht auch net oder kannst du abfragen ob der User seine Maus bewegt oder was in ein Textfeld eingegeben hat?!


Jay
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 20:51 Nach oben    #8
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 540
Standard

also irgendwie gibts hier glaub ich ein vertändisproblem... *g*
@chris
geht es dir jetzt darum, dass ein php script auf benutzeraktionen reagiert oder (wie ich das zuerst gedacht hab) darum, dass du ein persistentes script haben möchtest, das auf http requests reagiert???

benutzeraktionen können ganz einfach über javascript gemacht werden, wenn das jemand deaktiviert hat, hat er halt pech gehabt! ansonsten kann man manche aktionen auch über iframes als request an den server abschicken, aber das geht auch nicht wirklich gut.
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 20:59 Nach oben    #9
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Genau, ich möchte ein persistentes Script haben welches auf einen HTTPREquest reagiert, welches quasi im Hintergrund darauf "wartet". Wobei ich hier halt wirklich mit der Client-Server-Architektiv in den erwarteten Clinch komm..
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 21:12 Nach oben    #10
Jay
Gast
 
Beiträge: n/a
Standard

1. Was ist ein peristentes Script?

Zitat:
Genau, ich möchte ein persistentes Script haben welches auf einen HTTPREquest reagiert, welches quasi im Hintergrund darauf "wartet". Wobei ich hier halt wirklich mit der Client-Server-Architektiv in den erwarteten Clinch komm..
Jedes Script reagiert auf eine Anfrage. Wenn du forum.developers-guide.net/index.php aufrufst, dann reagiert das Script in index.php auf deine Anfrage und sendet dir HTML zurück!

Ein Script kann nicht "warten". Es kann ausgeführt werden und fertig.
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 21:21 Nach oben    #11
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Zitat:
Ein Script kann nicht "warten". Es kann ausgeführt werden und fertig.
Früher hab ich das über eine endlosschleife gelöst: Das Script hängt in der scheife und wartet solange auf einen neuen Flag in der Datenbank, der anzeigt dass was passiert ist. Da musste ich das so lösen, dass das Script in einem bestimmten Zeitinterval in der DB nachgesehen hab, ob der Wert sich geändert hat. Und das geht sowohl auf den Server, als auch auf den MySQLServer. Nun suche ich einfach auch eine andere Möglichkeit dafür, unter PHP und nichts anderem (hat schon seine Gründe).
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 21:57 Nach oben    #12
Erfahrener Benutzer
 
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
Standard

ein persistentes script kannst du mit der verwendung von sessions erreichen.
du musst einfach den aktuellen zustand des scriptes in der session oder auch in einer db speichern und beim erneuten aufruf wiederherstellen.
somit hast du ein persistentes script.
das geht auch ohne javascript, nur muss bei jedem ereigniss die seite neu geladen werden.

wenn man nicht gerade gegen javascript ist benutzt man für sowas ajax, aber es geht auch ohne.

vieleicht solltest du mal genauer erleutern was du überhaupt machen willst. dann wird sich auch eine lösung finden...

ein script mit einer endloßschleife einen socket oder eine db abfragen ist reine resourcenverschwendung und wird bei den meisten shared hostern auch nicht funktionieren, da diese die max_execution_time limitieren.
beny_mcde ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 23:36 Nach oben    #13
Jay
Gast
 
Beiträge: n/a
Standard

Zitat:
wenn man nicht gerade gegen javascript ist benutzt man für sowas ajax, aber es geht auch ohne.
Nein es geht nicht ohne clientseitige Sachen (Flash, JavaScript ...)
Weil man könnte natürlich die Seite andauernd aktualisieren lassen, aber wie Chr!s ja geschrieben hat will er, dass eine Aktion ausgeführt wird sobald der User etwas schreibt. Und das geht nunmal nur clientseitig. Serverseitig könnte man das auch net mit Sockets oder sonst noch was realisieren. Praktisch unmöglich!

EDIT:
Zitat:
das geht auch ohne javascript, nur muss bei jedem ereigniss die seite neu geladen werden.
Ein Ereignis ist dann aber das klicken eines Links, absenden eines Formulars o.ä. . Das hat mit Events aber nix mehr zu tun!


Zitat:
Früher hab ich das über eine endlosschleife gelöst: Das Script hängt in der scheife und wartet solange auf einen neuen Flag in der Datenbank, der anzeigt dass was passiert ist. Da musste ich das so lösen, dass das Script in einem bestimmten Zeitinterval in der DB nachgesehen hab, ob der Wert sich geändert hat. Und das geht sowohl auf den Server, als auch auf den MySQLServer.
Zeig doch mal bitte ein Script dazu. Weil ich dir das ehrlich gesagt in diesem Kontext nicht glauben kann.

Geändert von Jay (01.07.2006 um 23:39 Uhr)
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.07.2006, 00:20 Nach oben    #14
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.203
Standard

das problem ist doch, dass ich OHNE Javascript, vorhandene Ausgaben nicht löschen oder verändern kann, es wächst alles immer nach unten weiter, was ich doch recht unschön finden würde
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.07.2006, 00:47 Nach oben    #15
Jay
Gast
 
Beiträge: n/a
Standard

Zitat:
das problem ist doch, dass ich OHNE Javascript, vorhandene Ausgaben nicht löschen oder verändern kann, es wächst alles immer nach unten weiter, was ich doch recht unschön finden würde
Eigentlich nicht. Das Problem ist, dass es unmöglich ist.
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.07.2006, 07:18 Nach oben    #16
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.512
Standard

Weil Chr!s so darauf beharrt, denke ich, dass hier ein Missverständnis vorliegt, oder?
Jay hat ja komplett Recht, aber das sollte auch jedem hier bewusst sein.

Ein Skript wird aufgerufen, ausgeführt, beendet. Da ist in der Mitte keine Spanne drin, in der man auf "Events" reagieren kann.

Was genau willst du also machen?
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.07.2006, 20:23 Nach oben    #17
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 540
Standard

Zitat:
Zitat von Chr!s
Zitat:
Ein Script kann nicht "warten". Es kann ausgeführt werden und fertig.
Früher hab ich das über eine endlosschleife gelöst: Das Script hängt in der scheife und wartet solange auf einen neuen Flag in der Datenbank, der anzeigt dass was passiert ist. Da musste ich das so lösen, dass das Script in einem bestimmten Zeitinterval in der DB nachgesehen hab, ob der Wert sich geändert hat. Und das geht sowohl auf den Server, als auch auf den MySQLServer. Nun suche ich einfach auch eine andere Möglichkeit dafür, unter PHP und nichts anderem (hat schon seine Gründe).
also du möchtest so ne art chat bauen, oder? ein user verändert irgendwie die datenbank (durch nen neuen eintrag) und alle anderen user, die die seite gerade geöffnet haben, sollen dann diese veränderung sehen. soweit richtig?

da eine http verbindung immer vom client ausgeht und ne einfache endlosschleife in nem scipt zwecks timeout nicht möglich ist, muss der reload schon vom browser ausgehen
dazu kann man entweder javascript oder das meta-element refresh verwenden (ggf in kombiantion mit nem iframe), und dann zb alle 10 sekunden den server nach veränderungen fragen.
aber es ist mit http definitiv nicht möglich, auf eine datenbankveränderung hin, diese neuen daten an evt eingeloggte user oder so zu schicken. um sowas zu verwirklichen brauchst du schon einen anderen client, der auch serverfunktionen hat also auf datensendungen vom server reagieren kann.
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.07.2006, 18:33 Nach oben    #18
Jay
Gast
 
Beiträge: n/a
Standard

Zitat:
aber es ist mit http definitiv nicht möglich, auf eine datenbankveränderung hin, diese neuen daten an evt eingeloggte user oder so zu schicken. um sowas zu verwirklichen brauchst du schon einen anderen client, der auch serverfunktionen hat also auf datensendungen vom server reagieren kann.
Doch mit AJAX und JavaScript ist das ein 10 Zeiler.
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.07.2006, 18:24 Nach oben    #19
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 540
Standard

Zitat:
Zitat von Jay
Zitat:
aber es ist mit http definitiv nicht möglich, auf eine datenbankveränderung hin, diese neuen daten an evt eingeloggte user oder so zu schicken. um sowas zu verwirklichen brauchst du schon einen anderen client, der auch serverfunktionen hat also auf datensendungen vom server reagieren kann.
Doch mit AJAX und JavaScript ist das ein 10 Zeiler.
nein, da man mit ajax einfach nur in regelmäßigen abständen den server nach veränderungen fragt. die aktion geht also nicht vom server aus (weil http).
durch diese abfragen erreicht man zwar, dass veränderungen in der datanbank auch im browser aktualisiert werden (nach ner gewissen zeit), aber der server informiert eingloggte clients nicht automatisch über veränderungen.
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.07.2006, 19:28 Nach oben    #20
Jay
Gast
 
Beiträge: n/a
Standard

Das hast du aber auch net gesagt. Was du gesagt hast war, dass es mit HTTP nicht möglich ist auf Datenveränderungen zu reagieren und diese an den Client zu schicken. Ob das vom Server ausgeht oder vom Client hast du nicht gesagt!
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP 5.2 Kompilierung schlägt fehl Byrel Tools, Server, Betriebssysteme 0 03.11.2006 21:09
[Rezension] PHP 5 Kochbuch Artemis Literatur 2 07.09.2006 19:15
PHP 5.1.5, PHP 4.4.4 und PHP 5.2.0 RC2 veröffentlicht Ben Nachrichten 2 01.09.2006 16:05
PHP 5.1 ist drausen robo47 Nachrichten 5 28.11.2005 20:30
Neue PHP "release candidates": PHP 4.4.2 RC 1 und PHP 5.1 RC 6 Ben Nachrichten 1 21.11.2005 20:48


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45