Funktionsausführung abbrechen

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

  • Funktionsausführung abbrechen

    Hallo,
    ich hab mal eine Frage: Kann man die Ausführung einer (vordefinierten) Funktion nach einer bestimmten Zeit abbrechen und dann das Skript weiter ausführen?

    Danke und Grüße,
    Sebastian

  • #2
    Du kannst höchsten alle Operationen in der Funktion in einer Schleife packen und bei jedem Durchlauf die Zeit prüft, dann kann kann man die ausführung auch unterbrechen, e.g.

    PHP-Code:
    ...
    $end microtime(true)+20.0// 20 sec. only
    while (microtime(true)<$end) {
       ...

    oder Endlosschleife und per if prüfen und mit return aussteigen

    Kommentar


    • #3
      Danke, aber das bringt mir meines Erachtens nichts.

      Es handelt sich dabei um eine vordefinierte Funktion, die sich zu einem Server verbinden soll. Es kann aber vorkommen, dass der Server nicht erreichbar ist. Dann bricht das Skript nach einiger Zeit mit einer Fehlermeldung ab.

      PHP-Code:
      $loc=new COM("WbemScripting.SWbemLocator");
      $wmi=$loc->ConnectServer("testpc","root/cimv2","test","test");
      if(
      $wmi// Verbindung ist hergestellt - PC ist online
      {
           
      $online=1;
      }
      else 
      // Verbindung wurde nicht hergestellt - PC ist offline
      {
           
      $online=0;

      Hat jemand noch ne Ahnung?

      Kommentar


      • #4
        Da hast du imho nur eine Chance, wenn du dem wbemLocator einen Timeout angeben kannst. (vgl. fsockopen). Ansonsten wird PHP immer warten, bis der fertig ist.

        Kommentar


        • #5
          Ähm ... was willst du eigentlich ... fang doch den Fehler ab und gebe vernünftige Fehlermeldung aus ... was soll denn die Frage oben

          Kommentar


          • #6
            Naja, es dauert ca. ne halb Minute bis der Fehler erscheint. Solange wollte ich den Benutzer eigentlich nicht warten lassen.

            @TobiaZ: das guck ich mir mal an, danke.

            Kommentar


            • #7
              Ähm ... was willst du eigentlich ... fang doch den Fehler ab und gebe vernünftige Fehlermeldung aus ... was soll denn die Frage oben
              Vielleicht ist ja auch die max_execution_time abgelaufen, da hast du keine Chance, das zu fangen!
              Es gibt doch bestimmt einen Parameter für das COM-Objekt, da musst du mal die MS-Doku bemühen ^^

              Kommentar


              • #8
                Okay, ich hab mich nochmal ein bisschen belesen. Erstmal hat mir try-catch geholfen, die Fehlermeldung abzufangen, danke dafür. Es soll auch bei der ConnectServer-Funktion einen Timeout-Parameter geben, leider funktioniert der nicht wirklich. Tja, dann muss ich das irgendwie anders lösen.

                Trotzdem danke für die schnellen Antworten!

                Kommentar

                Lädt...
                X