ignor_user_abort und seine Tücken

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ignor_user_abort und seine Tücken

    Hoi leute ....

    mal folgende frage ...

    ich kann ja mit ignore_user_abort(1); erreichen das ein script auch weiterläuft wenn der User den Browser schließt.

    Wenn ich nun ein script alá

    <?
    ignore_user_abort(1);
    header("location:$SELF_PHP");
    ?>

    habe würde diese Kombination eine art endlosschleife ergeben.

    Da ich eine Scriptzeit von mehreren Stunden habe läuft das Script halt auch dementsprechend lange.

    Jetzt zur Frage wie kann ich sehen welche Scripte gerade laufen, weil ich denke wohl kaum das Windows im Taskmanager eine Task noch einen Thread dafür anlegt ... aber ich denke da muß es eine Möglichkeit geben oder?


    Dangö ...

  • #2
    frage, wieso führstdu das script nicht als cron aus ? da brauchst du kein script aufrufen, oder ist das unmöglich?
    bei fragen immer
    windows - pc: Start -> Ausführen -> cmd (command) - format c:
    linux : lass es , es hat sicher einen sinn so
    --
    php-forum.at


    >>>>dont ask me why<<<<

    Kommentar


    • #3
      @mickey
      ist doch ein windoooooof rechner ...

      @praetorian
      hast du nicht noch einen rechner rumstehen, um linux drauf zu machen?
      da geht das mit den cron's super....

      EDIT:
      warum machst du eigentlich das script endlos?
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        Original geschrieben von Abraxax
        @mickey
        ist doch ein windoooooof rechner ...

        @praetorian
        hast du nicht noch einen rechner rumstehen, um linux drauf zu machen?
        da geht das mit den cron's super....

        EDIT:
        warum machst du eigentlich das script endlos?
        Also Ja ich habe hier jede Menge Rechner rumstehen. Nur leider kann ich hier auf keinen Rechner Linux draufmachen weil es im Konzern nicht freigegeben ist ...

        Joa hatte quasi damit vor eine Art emulierten Cronjob abzubilden.

        Aber ihr habt mir leider nicht auf meine eigentliche Frage mit dem erkennen laufender Scripte geantwortet ?!

        Kommentar


        • #5
          also grundsätzlich kann ich nur sagen, dass dein script IMMER läuft. zumindest vom namen her. schliesslich rusft du es ja immer wieder auf.

          das du kein linux nehmen kannst ist schade. aber was will man machen. bisher habe ich dann auch keine lösung für dich
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            meee to ;-)


            das problem ist quasi das ein script laufe soll, und selbst starten soll und solange laufen soll wie es braucht, so das du keinen manuellen zugriff darauf hast, oder?

            naja, wie gesagt mit linux schreibst einfach einen cron job und thts ist, vorrausgesetzt das max_expersion_time lässt das zu, aber das könntest du ja mit set_time_limit(); hinausschieben.

            aber das problem ist ja das du es startest und das der browser zugemacht werden kann und das script weiterläuft. tja fällt ma wieder nur linux ein ;-) irgend einen vorteil muss es ja geben
            bei fragen immer
            windows - pc: Start -> Ausführen -> cmd (command) - format c:
            linux : lass es , es hat sicher einen sinn so
            --
            php-forum.at


            >>>>dont ask me why<<<<

            Kommentar


            • #7
              Re: ignor_user_abort und seine Tücken

              sagt mal, leute, seid ihr euch eigentlich sicher, dass dieses script in einer endlosschleife laufen würde, wenn der user seinen browser zumacht?


              das script ruft sich ja mit
              header("location:$SELF_PHP");
              selbst wieder auf.

              ein location header ist aber nur eine anweisung an den browser, die darin angegebene seite erneut anzufordern.

              wenn jetzt aber gar kein browser mehr da ist, weil zugemacht, dann kann dieser die seite auch nicht erneut vom server anfordern.


              diese betrachtungsweise hat jetzt schon fast ein bisschen was philosophisches, cogito ergo summ; ein browser der nicht ist kann auch nichts anfordern, aber trotzdem denke ich mal, dass es sich so verhält und deshalb eben keine endlosschleife zustande kommt, wenn der user seinen browser beendet...
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                sagt mal, leute, seid ihr euch eigentlich sicher, dass dieses script in einer endlosschleife laufen würde...
                ich glaube nicht.
                viel einfacher wäre doch auch sowas wie
                PHP-Code:
                set_time_limit(0);
                ignore_user_abort(1);
                while(
                true)
                {
                sleep(irgendwas... freut den prozessor);
                //und hier dan dat, was du machen willst

                eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

                Kommentar


                • #9
                  ich verstehe nur nicht ganz den sinn dahinter das das script sich endlos lange aufrufen soll?

                  cih verstehe es wenn ein script alle 30sec gestartet werden soll oder so, aber durchgehend, geht das net etwas auf die resourcen!?!?!

                  die sache mit dem header, geht doch so ab, gibt eine anfrage an den client mit dem location header, wenn ein ok zurück kommt wird das auch ausgeführt, allerd igns serverseitig, aber mit unterstützung und "feedback" vom client.
                  bei fragen immer
                  windows - pc: Start -> Ausführen -> cmd (command) - format c:
                  linux : lass es , es hat sicher einen sinn so
                  --
                  php-forum.at


                  >>>>dont ask me why<<<<

                  Kommentar


                  • #10
                    ...und du könntest beim starten des scriptes was inne datei schreiben, und beim beenden wieder löschen.
                    ev. mit register_shutdown_function() oder so...
                    eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

                    Kommentar


                    • #11
                      Jo also die header lösung war auch nicht so umbedingt zum umsetzen gedacht ... es ging eigentlich lediglich um ein Bsp. was eine Endlosschleife darstellt. Das das net funzt wenn der Browser zu is wusste ich nicht.

                      Aber eine Endlosschleife war das um was es eigentlich gehen sollte.

                      Also das heißt ich könnte mir mit einer endlosschleife eine "Art" Cronjob nachbauen .... ?! Kann ja timestamp berechnungen in der schleife anstellen ... und abhängig vom Stamp ne aktion ausführen.

                      Ach mal noch in diesem Zuge kann ich eigentlich per php Programme auf dem Server ausführen das er beispielsweise (auch wenns jetzt dumm ist) Word um 0:00 Uhr startet ... bitte jetzt aber nicht sagen das geht doch mit dem Windows Scheduler auch (weiss ich!) war nur ein beispiel ...

                      Kommentar


                      • #12
                        ja kannste .. guck dir mal system() an ..

                        und nein kannste nicht .. der apache server (und andre denk ich mal) kennen eine ttl (time to life) wenn die weg is, is auch der apache client weg und das skript wird nicht weiter bearbeitet ..

                        hatte da auch ein paar probs damit ..
                        aber jetzt läuft das skript unter linux, und sehr gut =)
                        ( php skript >> logfile & )

                        0,4% ram und 0,3% rechenleistung ..
                        mfg,
                        [color=#0080c0]Coragon[/color]

                        Kommentar

                        Lädt...
                        X