Ankündigung

Einklappen
Keine Ankündigung bisher.

Grundloses Timeout von SOAP

Einklappen

Neue Werbung 2019

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

  • Grundloses Timeout von SOAP

    Hallo,

    ich habe folgendes Problem: Ich hab ein Skript welches ca 40 Minuten lang Werte abgleicht & SOAP-Calls absetzt. Nun habe ich am Webserver von mir (Mein Webserver ist NICHT der Server wo das Plenty-System drauf läuft) folgende Einstellungen skript-intern & PHP-intern getätigt:

    ini_set( 'default_socket_timeout', 18000);

    default_socket_timeout=18000;
    max_execution_time=18000;


    Trotzdem bekomme ich nach zufälligen Sekunden einen Timeout...

    SoapFault exception: [HTTP] Bad Gateway in /var/www/vhosts/xxxxxxxxxx.de/yyyy.yyyyyyyyyy.de/zzzzzzz/scripts/iPrice.php:49
    Stack trace:
    #0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'http://www.be.....', 'http://www.be.....', 1, 0)
    Mein Code ist wie folgt aufgebaut:

    Es gibt eine Schleife welche insgesamt 32x einen SOAP-Befehl mir veränderten Parametern abschickt (Brauche 32000 Einträge des Systems & bekomme pro Call nur 1000 zurück). Diese lese ich in einen Array ein. Dann lese ich eine Datei in einen Array ein. Folgend vergleiche ich aus A1 jeden Wert mit dem gesamten A2 ob im 1. Element eine Gleichheit besteht. Wenn ja vergleiche ich von dem Element die Werte in Spalte Y. Ist ein Unterschied vorhanden, werden 2 SOAP-Calls abgesetzt & 2Sekunden "Sleep) ausgeführt. Nun bekomme ich jedoch diese Timeouts welche mir permanent den Abgleich durcheinander werfen. Aber nicht immer nach x Einträgen, sondern ganz random...

    Das passiert mal nach 701 Sekunden, mal nach über 3000. Wo liegt dort das Problem? Es sind maximal 150Calls pro IP über SOAP an Plentymarket pro Minute erlaubt, da liege ich deutlich drunter. Ich mache alle 3 Calls (welche 4/10 Sekunde dauern) einen 2Sekunden Sleep. Das sind also für 3 Befehle ca 2,5Sekunden. Das sind 72Calls/Minute, sogar weniger als die Hälfte aller erlaubten... Jemand ne AHnung? In meinem PLESK-Protokoll steht kein Error drin, an die root-Logs komme ich aktuell leider nicht dran... Wo ist mein Denkfehler?...

  • #2
    Das ist kein Timeout, zumindestens nicht auf deinem System. Du bekommst auf deinen SOAP Request ein HTTP Error zurück. Vermuttlich wird das Zielsystem in ein Timeout rennen oder kommt anderweitig mit dem Request nicht klar. Entweder setzt du dich mit dem Betreiber in verbindung oder versuchst es erstmal mit kleineren Anfragen (statt 1000 nur 500 Einträge).

    Kommentar


    • #3
      Warum machst du das nicht über ein Script, dass auf Shell-Ebene läuft? Dann hast du zumindest schon mal kein Problem mehr mit max_execution_time. Ich bin mir nicht sicher, was du mit dem Socket-Timeout bezweckst...

      Kommentar


      • #4
        Bad Gateway
        Das ist ein (Timeout) * in einem Proxy oder Loadbalancer, der zwischen dem Webserver und dem Client sitzt.

        * edit: Wenn du permanent Datenfluß auf der Leitung hast, sollte es keinen Timeout geben. Trotzdem sitzt irgendwer zwischen Client und Webserver der die Verbindung terminiert.
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar

        Lädt...
        X