MichaelS: Verzögerungswerte

Hallo!

Kleine Frage an euch... Gibt es bei PHP auch einen Befehl zu Zeitverzögerung wie unter Perl mit sleep(sec.)???

Wenn ja, wie lautet er denn? :-)  Kann mann diesen dann einsetzen wo mann will ?

vielen dank im voraus...

Gruß Michael

PS: gutes neues Jahr... :-))

  1. Hi,

    Kleine Frage an euch... Gibt es bei PHP auch einen Befehl zu Zeitverzögerung wie unter Perl mit sleep(sec.)???

    warum sollte es? PHP ist auf den Einsatz in HTTP optimiert; ein sleep kurz vor Scriptende würde zur Verzögerung der Auslieferung auch des ersten Bytes des Response führen.

    Kann mann diesen dann einsetzen wo mann will ?

    Nur fast. Man darf ihn überall einsetzen, nur nicht in HTTP ;-)

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Hallo Cheatah!

      ein sleep kurz vor Scriptende würde zur Verzögerung der Auslieferung auch des ersten Bytes des Response führen.

      Wenn du vor das Sleep einen flush() setzt nicht ;-) So etwas ist durchaus sinnvoll wenn man z.B. eine Streambasierten Chat programmiert. Wäre schwachsinnig die Datenbankabfrage (ob jetzt neue Meldungen da sind) in eine Endlosschleife ohne Pause zu hängen. Da bietet sich das Sleep doch ganz gut an.

      MfG,
      Mirko Hansen

      1. Hallo Mirko,

        So etwas ist durchaus sinnvoll wenn man z.B. eine Streambasierten Chat programmiert. Wäre schwachsinnig die Datenbankabfrage (ob jetzt neue Meldungen da sind) in eine Endlosschleife ohne Pause zu hängen. Da bietet sich das Sleep doch ganz gut an.

        Um Cheatah die Antwort vorweg zu nehmen: Ein streambasierter Chat ist prinzipiell schwachsinnig. Das HTTP-Protokoll ist zustands- und verbindungslos.

        Grüße,

        Christian

        --
        Ich wünsche allen ein frohes neues Jahr 2003!
        Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
        Hmm, was könnte ich sonst noch in die Signatur schreiben?
        1. Hi,

          Um Cheatah die Antwort vorweg zu nehmen:

          danke, das spart mir Zeit :-) Das letzte Wort Deiner Antwort (nein, nicht "Grüße", grummel *g*) ist auch ein wesentlicher Grund dafür, warum das künstliche Offenhalten einer Verbindung alles andere als sinnvoll ist.

          Cheatah

          --
          X-Will-Answer-Email: No
    2. Hi Cheatah,

      Kleine Frage an euch... Gibt es bei PHP auch einen Befehl zu Zeitverzögerung wie unter Perl mit sleep(sec.)???

      warum sollte es? PHP ist auf den Einsatz in HTTP optimiert; ein sleep kurz vor Scriptende würde zur Verzögerung der Auslieferung auch des ersten Bytes des Response führen.

      Wie kommst Du nun wieder darauf?
      Wann ein Byte ausgeliefert wird, entscheidet die gewählte Bufferstrategie des Webservers. Man kann jederzeit mit dem Befehl flush() dafür sorgen, dass die Buffers geleert werden.

      Die Verwendung der Befehle sleep() und usleep() kann durchaus sinnvoll sein. Zum Beispiel bei der Abarbeitung von Requests, die als Antwort ein Frameset haben. Wenn es notwendig ist, dass die Framesources in einer bestimmten Reihenfolge ausgeleifert werden (weil sie z.B. gemeinsam zu Berechnungen in einer Session beitragen), dann kann man das mit usleep() wunderbar steuern.

      Zu berücksichtigen ist, dass sleep() und usleep() die max_execution_time bei jedem Aufruf zurücksetzen. Man sollte also sehr genau darauf achten, dass man keine Endlosschleifen baut.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
      1. Hi,

        Wann ein Byte ausgeliefert wird, entscheidet die gewählte Bufferstrategie des Webservers.

        richtig - der Webserver, nicht ein davor liegendes Script. Überlege Dir bitte auch, wozu der HTTP-Header Content-Length gut ist und wie dieser bei Verwendung von flush() gefüllt werden kann. Dass es auch ohne diesen (oder sogar mit Multipart-Responses) funktioniert heißt noch lange nicht, dass dies dem Sinn von HTTP entspricht und gut für darin arbeitende Systeme ist. Denke auch an Timeout-Mechanismen.

        Die Verwendung der Befehle sleep() und usleep() kann durchaus sinnvoll sein.

        Ganz ernsthaft: Bist Du der Ansicht, jemand könne die Sinnhaftigkeit dessen beurteilen, der nicht einmal eine Funktion in der Dokumentation findet, von der er sogar den Namen kennt? MichaelS hat noch viel zu viel zu lernen, um sich der Konsequenzen seines Tun bewusst zu sein und entscheiden zu können, ob der Einsatz sinnvoll und richtig ist.

        Zum Beispiel bei der Abarbeitung von Requests, die als Antwort ein Frameset haben. Wenn es notwendig ist, dass die Framesources in einer bestimmten Reihenfolge ausgeleifert werden

        Oh. Das muss aber ein sehr filigranes Framework sein, wenn es in der Lage ist, einen separaten Request zu erkennen (und einfach nur pauschal zu warten reicht nicht aus). Ich bezweifele ernsthaft, dass PHP hierzu in der Lage ist. Ganz nebenbei bemerkt passt es ebenfalls nicht in das Konzept von HTTP, wenn eine Requestreihenfolge von Belang ist. HTTP sieht jeden einzelnen Request in einem eigenständigen Universum - andere Requests existieren hier nicht.

        (weil sie z.B. gemeinsam zu Berechnungen in einer Session beitragen),

        Konzeptfehler. Sowas mag in einer Applikation Sinn machen, nicht aber im Internet.

        Zu berücksichtigen ist, dass sleep() und usleep() die max_execution_time bei jedem Aufruf zurücksetzen.

        Nicht jedoch die Timeouts anderer, von diesem Webserver unabhängiger Systeme.

        Cheatah

        --
        X-Will-Answer-Email: No
  2. Hallo Michael!

    Kleine Frage an euch... Gibt es bei PHP auch einen Befehl zu Zeitverzögerung wie unter Perl mit sleep(sec.)???

    Ja gibt es auch. Siehe:
    http://www.php3.de/manual/de/function.sleep.php

    oder für Zeiten <1 Sek.:
    http://www.php3.de/manual/de/function.usleep.php

    MfG,
    Mirko Hansen

  3. Hallo Michael,

    Kleine Frage an euch... Gibt es bei PHP auch einen Befehl zu Zeitverzögerung wie unter Perl mit sleep(sec.)???
    Wenn ja, wie lautet er denn? :-)

    dreimal darfst du raten... richtig, er heißt sleep()... :-)
    ->http://www.php.net/manual/de/function.sleep.php

    PS: gutes neues Jahr... :-))

    ebenfalls :-)

    Kann mann diesen dann einsetzen wo mann will ?

    das kommt darauf an, was du machen willst, aber prinzipiell denke ich mal schon
    btw: warum soll nur mann das einsetzten können und nicht frau auch :-) *scnr*

    Grüße aus Nürnberg
    Tobias