Webservice-Aufrufe brechen Script ab

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

  • Webservice-Aufrufe brechen Script ab

    Hallo,

    ich habe ein Script, daß zwei Datenbanken via Webservice miteinander synchronisiert. Ich prüfe dabei, ob die eine Datenbank Werte enthält, die in der anderen nicht enthalten sind, und ergänze gegebenenfalls fehlende Werte.

    Das ganze klappt soweit ganz gut, nur wenn viele Datensätze synchronisiert werden sollen, kommt der Browser nach ca. 3 Minuten mit der Meldung "Seite kann nicht angezeigt werden".

    Komischerweise funktioniert das auf meinem lokalen WAMP-Rechner auch mit vielen Daten, auf dem Linux-Server tut das ganze nur mit relativ wenig Daten.

    Noch etwas zur Technik:
    Ich greife mit einem Nusoap-Client auf einen .net-Server zu, der meldet als Response dann die jeweils fehlenden Werte zurück. Dabei werden während eines Sync-Vorgangs locker mal 500 SOAP-Requests gestartet. Die Laufzeit im (funktionierenden) lokalen System kann da schon mal bis zu 15 Minuten dauern (BTW, set_time_limit steht auf 20 Min.)

    Ich vermute nun, daß der Apache den Job killt, wenn es PHP wäre, müsste ja ein Fatal Error angezeigt werden. Allerdings ist die max_input_time (php.ini) in beiden eingesetzten Systemen auf 60 Sekunden eingestellt, die Meldung "Seite kann nicht angezeigt werden" kommt aber erst nach ca. 3 Minuten.

    Kennt jemand dieses Phänomen? Und noch besser, weiß jemand, wie ich das in den Griff kriegen kann?

    Vielen Dank schon mal für eventuelle Antworten

    Emil der Hase

  • #2
    Ich schätze eher es ist einfach ein Browser-Timeout?
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Hmm, wäre möglich. Dazu zwei Fragen:

      1. Kann man einen Browser-Timeout irgendwie verhindern?

      2. Wenn der Browser einen Timeout liefert, was passiert dann mit dem eigentlichen Script? Es sieht nicht so aus, als ob das im Hintergrund weiterlaufen würde, die Ergebnisse sehen nach Komplettabbruch aus.

      Danke schon mal für Deine Antwort

      Emil der Hase

      Kommentar


      • #4
        Original geschrieben von emil_der_hase
        1. Kann man einen Browser-Timeout irgendwie verhindern?
        du kannst den grenzwert ggf. höher setzen.
        im firefox bspw. per about:config in der adressleiste, dann man nach timeout oder limit o.ä. suchen.
        2. Wenn der Browser einen Timeout liefert, was passiert dann mit dem eigentlichen Script? Es sieht nicht so aus, als ob das im Hintergrund weiterlaufen würde, die Ergebnisse sehen nach Komplettabbruch aus.
        evtl. hilfreich:
        http://www.php.net/manual/en/ref.mis...ore-user-abort
        http://www.php.net/manual/en/functio...user-abort.php
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Original geschrieben von wahsaga
          du kannst den grenzwert ggf. höher setzen.
          im firefox bspw. per about:config in der adressleiste, dann man nach timeout oder limit o.ä. suchen.
          Hm, hab jetzt im Firefox mal die Einträge "network.http.keep-alive.timeout" und "network.http.request.timeout" hochgesetzt, allerdings ohne Veränderung. Im Firefox kommt nach ca. 3 Min. die Meldung "document contains no data".

          Das sieht interessant aus, ignore_user_abort ist bei mir auf "off" gestellt, d.h. die Scriptausführung wird bei Benutzerabbruch ebenfalls abgebrochen. Das könnte die richtige Fährte sein, danke!

          Emil der Hase

          Kommentar

          Lädt...
          X