curly: max Ausführungszeit für Funktion

Morgen,

habe eine Funktion, die mit curl trotz Timeout-Direktiven, in manchen Fällen unbegrenzt lange läuft. Das Problem wurde ich einem anderen Thread geschildert. Dazu wusste keiner Rat. Nun würde ich es gerne ganz anders lösen und da es somit nichts mehr mit dem anderen Thread zu tun hat, poste ich in einem neuen.

Gibt es eine Möglichkeit, eine maximale Ausführungszeit für eine PHP-Funktion festzulegen? Also wie set_time_limit(10), jedoch nicht für das ganze Script, sondern nur für eine einzelne Funktionsausführung soll diese Einschränkung gelten.
Alternativ, aber wirklich sehr quick'n'dirt wäre, die Funkion in ein 2. Script auszulagern und dann mit fopen Script2 von Script1 aus aufzurufen. Dann könnte das gesamte Script2 mit set_time_limit ausgestattet werden...
Aber PHP hat doch hoffentlich eine elegantere Lösung zu bitten.
Das hoffe ich zumindest und bitte Euch um Rat.

Besten Dank!

  1. Hi,

    Gibt es eine Möglichkeit, eine maximale Ausführungszeit für eine PHP-Funktion festzulegen?

    Nein.

    Also wie set_time_limit(10), jedoch nicht für das ganze Script, sondern nur für eine einzelne Funktionsausführung soll diese Einschränkung gelten.

    Dann ändere set_time_limit() zu Beginn der Funktion, und setze es am Ende der Funktion wieder zurück.

    Gruß, Cybaer

    --
    Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
    (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
    1. Hello,

      Gibt es eine Möglichkeit, eine maximale Ausführungszeit für eine PHP-Funktion festzulegen?

      Also wie set_time_limit(10), jedoch nicht für das ganze Script, sondern nur für eine einzelne Funktionsausführung soll diese Einschränkung gelten.

      Dann ändere set_time_limit() zu Beginn der Funktion, und setze es am Ende der Funktion wieder zurück.

      Nützt das überhaupt etwas? Gilt das Time-Limit nicht nur für die innerhalb des PHP-Parsers verbratene Rechenzeit, also sowieso nicht die Wartezeit (sleep() )?
      Und mMn gehören die cUrl-Funktionen genauso nicht dazu, wie Betriebssystemaufrufe mit exec() und Konsorten.

      Liebe Grüße aus dem Cyberspace

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hi,

        Nützt das überhaupt etwas?

        Gute Frage.

        Meine *Meinung* entspricht deiner, und meine Antwort auf *diese* Frage lautet: Nein, das wird IMHO eh nicht klappen.

        Aber *wissen* tue ich es nicht!

        curly wird es testen (ist ja eh seine einzige Möglichkeit >;->) und, das wäre natürlich nicht schlecht, anschließend uns hier schlauer machen ... :)

        Gruß, Cybaer

        --
        Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
        (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
    2. Hi,

      Also wie set_time_limit(10), jedoch nicht für das ganze Script, sondern nur für eine einzelne Funktionsausführung soll diese Einschränkung gelten.

      Dann ändere set_time_limit() zu Beginn der Funktion, und setze es am Ende der Funktion wieder zurück.

      Das würde dir dann aber im Zweifelsfalle doch trotzdem noch einen "harten" Abbruch des kompletten Scriptes bewirken - und eben keine Möglichkeit, auf einen zu lange dauernden cURL-Request entsprechend zu reagieren.

      MfG ChrisB

      --
      Light travels faster than sound - that's why most people appear bright until you hear them speak.
      1. Hi,

        Das würde dir dann aber im Zweifelsfalle doch trotzdem noch einen "harten" Abbruch des kompletten Scriptes bewirken - und eben keine Möglichkeit, auf einen zu lange dauernden cURL-Request entsprechend zu reagieren.

        Ja. Das müßte man abfangen mit einem zeitgesteuerten Weiterleitung (JS und META-Element), die man vorher ausgibt und den Browser dann ggf. (und hoffentlich) zum erneuten Laden veranlaßt.

        Aber eigentlich verschwendete Gedanken - wird wohl eh nicht funktionieren ... >:->

        Gruß, Cybaer

        --
        Zweck des Disputs oder der Diskussion soll nicht der Sieg, sondern der Gewinn sein.
        (Joseph Joubert, Schriftsteller)