Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : ein timeout in PHP



GU4RDI4N
24-04-2005, 18:38
hi,
wie kann ich es machen, das eine funktion erst nach einer bestimmten zeit ausgeführt wird?
(wie window.SetTimeout("funktion()"); in javascript, nur das ich es in PHP brauche.)

danke für antworten.

undefined
25-04-2005, 07:23
sleep()

Jedoch ergibt dies keinen oder wenig Sinn ;)
PHP ist eine Serverseitige Script-Sprache, das heißt das du erst die Ausgabe bekommt wenn das ganze Script abgearbeitet wurde.
Was genau willst du machen?

ExRevel
25-04-2005, 08:27
Genau erkannt, in JavaScript ist das gut möglich doch in PHP verbietet das die Logik schon irgendwie. :)

ciao

GU4RDI4N
25-04-2005, 12:19
ich wollte ursprünglich ein browser-game machen, was aber in echtzeit leuft, also ohne ständiges neuladen.
dafür brauche ich eine permanente datenübertragung zwischen server(PHP) und client(javascript).
allerdings wollte ich auf dem server keine endlose schleife machen,
da dies zu viel überflüssige rechenleistung in anspruch nimmt.


while()
{
if(neue_daten_da())
{echo "var new=".$neue daten.";";}/*wird in javascript auf dem client bearbeitet*/
}


besser könnte man es so machen:


function senden()
{
if(neue_daten_da())
{echo "var new=".$neue daten.";";}
setTimeout("senden()",5000);//die funktion nach der ich gefragt hab
}


wovon ich aber noch nicht gehört habe,
ist das das ergebniss erst nach dem beenden des PHP-scripts
zum client gesendet wird.
denn erstens funktioniert es auf worldtalk.de genauso,
und zweitens habe ich schonmal nen versuch gemacht:
test.php:


<?php

while()
{echo "hallo
";}

?>

ergebniss:


hallo
hallo
hallo
hallo
hallo
hallo
hallo
hallo
hallo
...

die seite wurde nie zuendegeladen, und es waren 62.565.198.151.642 hallo's drinne , und es wurden immer mehr.
also wird das ergebniss NICHT erst am ende des scripts zum client gesendet,
sondern dann wenn er auf das 'echo "hallo";' trifft.

undefined
25-04-2005, 14:20
wovon ich aber noch nicht gehört habe,
ist das das ergebniss erst nach dem beenden des PHP-scripts
zum client gesendet wird.
denn erstens funktioniert es auf worldtalk.de genauso,
und zweitens habe ich schonmal nen versuch gemacht:
Dann halte dich an den Verein :D

Generell was du vor hast kannst du vernünftig mit Sockets regeln ;)
Wobei mir nicht bekannt ist das man mit Javascript und Sockets arbeiten kann, Flash, Java mit PHP-Socket ja.

nEox
25-04-2005, 18:45
Hallo GU4RDI4N,

dir kann evt. das von modernen Browsern unterstützte "XML HTTP Request"-Objekt helfen.

Damit kannst du per Javascript HTTP Requests auf andere Dateien durchführen und dann das Ergebnis(z. B. XML) "onthefly" verarbeiten.

Auf dieser Seite findest du eine Erklärung:
http://jibbering.com/2002/4/httprequest.html

Ein paar Beispiele mit JSPAN gibt es hier:
http://jpspan.sourceforge.net/examples/

JSPAN (http://jpspan.sourceforge.net/wiki/doku.php) ist ein Tool zur einfachen Entwicklung von webbasierten Client/Server Anwendungen.

Weitere Links:

Konzept zur Entwicklung von Web Applikationen
http://www.adaptivepath.com/publications/essays/archives/000385.php
(S)AJAX - wie JSPAN
http://www.modernmethod.com/sajax/index.phtml
Schönes Beispiel (http://www.modernmethod.com/sajax/sajax-0.11/php/example_wall.php)

Habe mich bis jetzt nur theoretisch mit dem Thema befasst, daher kann ich dir bei praktischen Problemen nicht viel helfen. Sollte allerdings nicht sehr kompliziert sein.

Gruß

nEox

BlueJay
26-04-2005, 08:47
ich wollte ursprünglich ein browser-game machen, was aber in echtzeit leuft, also ohne ständiges neuladen.
dafür brauche ich eine permanente datenübertragung zwischen server(PHP) und client(javascript).


Huh? nicht jeder hat 'ne FlatteRatte!
Vorschlag: Lass den Server (php) konventionell arbeiten und den Client (Javascript/HTML) pollen.
Halte die Datenübertragung möglichst klein und sei darauf gefasst, dass von der Javascript-Seite aus geschummelt wird.
Identifikation kann durch session-Variable erfolgen.



wovon ich aber noch nicht gehört habe,
ist das das ergebniss erst nach dem beenden des PHP-scripts
zum client gesendet wird.


Halte ich für ein Gerücht oder Einstellungssache.
Als ich meine Logs noch per php (yuck!) ausgewertet habe, hat er mir, obwohl das Script noch nicht durchgelaufen war, die Zwischenergebnisse schon mal dargestellt, wahrscheinlich, nachdem ein bestimmter (ziemlich fetter) Puffer vollgelaufen war.

Wenn eot oder so was kommt, wird natürlich dieser Puffer geflusht, was dann so aussieht, als ob die Daten erst nach Beenden des Scriptes auf Reisen gehen.

so long,
BlueJay