nochmal Marc: Grundlegendes zu PHP

Wie ist das, wenn jemand eine PHP-Seite aufruft, diese aber abbricht, bevor der PHP-Teil zu Ende geparst wurde?

Oder wird der in jedem Fall bis zum Schluss ausgeführt?

  1. Hi there,

    Wie ist das, wenn jemand eine PHP-Seite aufruft, diese aber abbricht, bevor der PHP-Teil zu Ende geparst wurde?

    Kann nicht sein, denn wenn etwas da ist, was Du abbrechen kannst, ist der Parser schon längst gelaufen und fertig...

    1. Hallo Klawischnigg,

      Wie ist das, wenn jemand eine PHP-Seite aufruft, diese aber abbricht, bevor der PHP-Teil zu Ende geparst wurde?

      Kann nicht sein, denn wenn etwas da ist, was Du abbrechen kannst, ist der Parser schon längst gelaufen und fertig...

      Falsch.

      Und als Antwort auf Marc: Das PHP-Script wird immer komplett ausgeführt, oder bis der PHP Timeout zuschlägt. Das hat mit dem Client nichts zu tun: Wenn der schon nach 10% abbricht, läuft das PHP-Skript trotzdem noch weiter.

      Grüße

      Marc Reichelt || http://www.marcreichelt.de/

      --
      Linux is like a wigwam - no windows, no gates and an Apache inside!
      Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
      http://emmanuel.dammerer.at/selfcode.html
      1. Hi Marc,

        Und als Antwort auf Marc: Das PHP-Script wird immer komplett ausgeführt, oder bis der PHP Timeout zuschlägt. Das hat mit dem Client nichts zu tun: Wenn der schon nach 10% abbricht, läuft das PHP-Skript trotzdem noch weiter.

        Jein, es gibt da noch die php.ini Direktive ignore_user_abort - wenn ich das richtig verstanden haben, sollte sich gewünschtes Verhalten darüber regeln lassen, ausprobiert habe ich es allerdings noch nicht.

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
        Crypt::PasswdMD5 jetzt auch in PHP
        Wissen ist gut, Können ist besser, aber das Beste und Interessanteste ist der Weg dahin! (Detlef G.)
        1. Danke für die Antworten, da muss ich mal meinen Provider fragen, wie das bei ihm eingestellt ist...

          1. Hallo Marc,

            da muss ich mal meinen Provider fragen, wie das bei ihm eingestellt ist...

            [ ] du kennst phpinfo()

            Grüße aus Nürnberg
            Tobias

        2. Hi,

          Jein, es gibt da noch die php.ini Direktive ignore_user_abort - wenn ich das richtig verstanden haben, sollte sich gewünschtes Verhalten darüber regeln lassen, ausprobiert habe ich es allerdings noch nicht.

          Dem ist so.

          Und man kann es natürlich auch selbst einstellen. Die entsprechende Funktion heißt (Tusch!): ignore_user_abort ;-))

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          1. Hi Cybaer,

            Und man kann es natürlich auch selbst einstellen. Die entsprechende Funktion heißt (Tusch!): ignore_user_abort ;-))

            Ja, ich weiß, steht ja auf der von mir verlinkten Seite ;-)

            MfG, Dennis.

      2. Hi there,

        Kann nicht sein, denn wenn etwas da ist, was Du abbrechen kannst, ist der Parser schon längst gelaufen und fertig...

        Falsch.

        Was ist daran falsch? Ich denke, der OP wollte wissen, ob er in seinem Browser den Parser stoppen kann, und das funktioniert einfach nicht...

        1. Hallo Klawischnigg,

          Kann nicht sein, denn wenn etwas da ist, was Du abbrechen kannst, ist der Parser schon längst gelaufen und fertig...

          Falsch.

          Was ist daran falsch? Ich denke, der OP wollte wissen, ob er in seinem Browser den Parser stoppen kann, und das funktioniert einfach nicht...

          Das hast du aber nicht geschrieben.
          Der Parser kann sehr wohl noch weiterlaufen (wie Dennis aber soeben berichtet, kann man das Verhalten einstellen).
          Ist diese Option aber deaktiviert, so läuft das PHP-Script weiter, auch nachdem du den Ladevorgang abgebrochen hast.

          Grüße

          Marc Reichelt || http://www.marcreichelt.de/

          --
          Linux is like a wigwam - no windows, no gates and an Apache inside!
          Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
          http://emmanuel.dammerer.at/selfcode.html
          1. hi,

            Der Parser kann sehr wohl noch weiterlaufen (wie Dennis aber soeben berichtet, kann man das Verhalten einstellen).
            Ist diese Option aber deaktiviert, so läuft das PHP-Script weiter, auch nachdem du den Ladevorgang abgebrochen hast.

            Auch wieder "falsch" :-)

            Zum einen heißt die Option ignore_user_abort - muss also eingeschaltet sein (auf true gesetzt), damit das Script den Abbruch des Requests durch den Client ignoriert.

            Außerdem sagt das Manual

            "If changed to FALSE scripts will be terminated as soon as they try to output something after a client has aborted their connection."

            D.h. also, dass ein Script, welches den user abort _nicht_ ignorieren soll, erst dann abgebrochen würde, wenn es danach noch eine Ausgabe zu machen versuchen würde. Scriptteile, die keine Ausgaben machen - Eintragen in eine Datenbank, Schreiben in ein Textfile, wasauchimmer - würden dadurch nicht automatisch abgebrochen, sondern laufen auch dann weiter bzw. zuende, wenn der Client schon signalisiert haben sollte, dass er sich dafür gar nicht mehr interessiert.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }