Ankündigung

Einklappen
Keine Ankündigung bisher.

set_time_limit wird ignoriert bei shell aufruf->Script läuft ewig!

Einklappen

Neue Werbung 2019

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

  • set_time_limit wird ignoriert bei shell aufruf->Script läuft ewig!

    Hallo,

    ich habe ein Script das als Server dient und sich und unter Debian an einen Socket bindet ( per inetd.conf ).
    Das Script selbst ist ausführbar ( 755 ). Teste es direkt über die Shell ( ./script.php ) aber auch mit php -e script.php macht es keine Unterschied.

    Es frägt eigentlich nur die Eingaben ab nach folgendem Schema:

    Auszug:
    PHP-Code:
    #!/usr/bin/php
    <?php
    // Zeitlimit setzen
    set_time_limit(4);
    ...
    $input fgets(STDIN);
    echo 
    $ausgabe;
    ...
    ...
    Leider ignoriert es ein set_time_limit komplett und läuft endlos weiter was so nicht tragbar ist.

    Irgendeiner eine Idee oder Lösungvorschlag?

  • #2
    Hallo,

    ich nehme an, die Laufzeit wird von einer anderen Komponente beeinflusst. Im Manual steht dazu

    Note: The set_time_limit() function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not included when determining the maximum time that the script has been running.
    Vielleicht hilft das.

    Kommentar


    • #3
      Das Script führt aber keinerlei Systemaufrufe durch. Also das kann es nicht sein.
      Was ich eben gefunden habe ist:
      Probleme mit set_time_limit - Forum: phpforum.de

      ...
      Es gibt bestimmte php.ini-Direktiven, die vom CLI SAPI außer Kraft gesetzt werden, weil sie in einer Kommandozeilenumgebung keinen Sinn ergeben.
      --------
      max_execution_time 0 (unlimited)
      Wegen der unendlichen Möglichkeiten, PHP in Kommandozeilenumgebungen zu benutzen wurde die maximale Ausführungszeit auf unbegrenzte Zeit eingestellt. Wohingegen Anwendungen, die für das Web geschrieben wurden, oft in sehr kurzer Zeit ausgeführt werden, neigen Anwendungen für die Kommandozeile dazu, eine viel längere Ausführungszeit zu beanspruchen.
      ...

      Nur muss ich das irgendwie umgehen denn ich brauche einen Abbruch des Scriptes wenn eine Weile nichts passiert. Da es sich um eine Endlosschleife handelt kann es nämlich sein das ich sonst die Scripte ewig laufen habe.

      Ideen ?

      Kommentar


      • #4
        max_execution_time auf 10 setzen?! Ich verstehe die Frage nicht so ganz =/

        Kommentar


        • #5
          Zitat von fridhi Beitrag anzeigen
          Das Script führt aber keinerlei Systemaufrufe durch. Also das kann es nicht sein.
          Vielleicht gehört STDIN ja dazu?! Immerhin ist es außerhalb des Scripts und hängt an der Konsoleneingabe. Ist im grunde ja das gleiche wie eine Datei, nur das der filepointer nicht zu einer Datei geht, sondern zu einem socket und in der php doc steht ja
          [...]stream operations[...]

          Kommentar


          • #6
            Hallo,

            woran es auch immer liegt, ich habe festgestellt das linux das SCript beendet sobald jemand die Verbindung auf den Port beendet oder es einen Timeout gibt. Also läuft da nix ewig weiter.
            Trotzdem wäre ein richtiger Timeout in PHP nicht schlecht. PHP scheint sich wohl irgendwie an der Prozessorlast zu orientieren und das ist natürlich in einem SCript das nichts tut außer auf eine Eingabe zu warten schlecht denn es greift nicht.

            Kommentar


            • #7
              Meine Skripte laufen ueber Konsole solang wie sie eben brauchen, per Web gibts einen Timeout. Ich nehme an hier greift das ganze ueber die Konsole also nicht.

              Kommentar

              Lädt...
              X