PHP: Gesplittete SOAP daten zusammensetzen?



  • ich setze auf beiden seiten keine WSDL datei ein. ich werde irgendwie grad nicht schlau draus. wenn ich mit einem packet sniffer das ganze szenario mal betrachte, sieht es so aus, als wäre alles in einem rutsch am senden. es gibt zumindest nur ein eintrag mit mehr als 1000 KB und 4132 packeten. 😕

    weiss nun leider nicht wo ich den ansatz machen soll. der anfang ist zumindest das es mit kleinen dateien tadellos funktioniert. mit grösseren nicht mehr. hat SOAPServer ein limit was man evl. aufheben muss?



  • also, neuste erkenntnis: es wird scheinbar nicht gesplittet. eine bild datei mit 800 KB funktioniert auch noch. aber eben, eine bild datei mit über 2 MB nicht mehr. da kommt die fehlermeldung:

    "XML document must have a top level element."

    ich tendiere stark dazu, dass das XML element nicht mit > abgeschlossen wird. das sagt mir in erster linie das es server seitig ein limit geben muss. 🙄



  • AUf beiden Seiten gibt sowieso keine WSDL. WSDL ist nur die Beschreibung der WebserviceSchnittstelle.

    Mach dir eine und gut ist es.



  • ich benutze den C++ Builder 6 der sollte glaube ich alles automatisch implementieren. wenn ich eine 8 MB grosse datei nehme, kommt ein "Operation timeout". sind dir keine limits für SOAP und php bekannt?



  • Das könnte aber auch eine Limitation des php-Systems unter dem Webserver sein. Schau mal in der php-Konfiguration (php.ini) nach begrenzenden Attributen.



  • endlich! man muss die folgenden optionen ändern:

    file_uploads
    upload_max_filesize
    max_input_time
    memory_limit
    max_execution_time
    post_max_size

    danke jungs!



  • bei mir war max_input_time ausschalggebend. :xmas2: :xmas1:



  • ich muss trotzdem schnell nachfragen:

    was ist wenn jemand eine sehr langsame verbindung hat, dann hat dies ja einfluss auf den max_execution_time wert oder nicht? so gesehen müsste ich ja einen globalen extrem hohen wert setzen, damit es "ungefähr" für jeden stimmt, aber das ist ja nicht wirklich die lösung. was tun?

    und was davon ist für den SOAP wirklich relevant?
    - max_execution_time
    - max_input_time

    eigentlich beides oder? aber max_input_time sollte glaube ich eher relevant sein weil wenn ich richtig schätze, bezieht sich die max_execution_time auf das script ansich, also das ausführen des codes. da aber ein receive nicht wirklich viel mit empfangen zu tun hat, das script zwar läuft, tendiere ich eher zu max_input_time.



  • Ich bilde mir ein,, dass Du diese Werte auch in einem Skript setzen kannst die dann nur für dieses Skript gelten. Dann mußt Du eben die Limitationen im SAOP-Empfänger-Skript abschalten.



  • leider habe ich erneut probleme. zu früh gefreut 😞

    ich glaube ich brauche eine generelle aufklärung des mechanismus. gehe ich richtig der annahme, dass das senden an den SOAP server in erster linie mit php garnichts zu tun hat? sondern erst die verarbeitung der bereits gesendeten daten durch die methode handle() ist der php teil? wenn dem so ist, dann brauche ich doch die ganzen php ini settings garnicht oder? sondern vielmehr direkte apache settings, die mir erlauben, grösse POST daten zu zu lassen. stimmt das? wenn auch hier richtig, wie genau muss ich das dann einstellen?





  • danke dort war ich schon. leider finde ich nichts passendes ausser:

    LimitXMLRequestBody

    doch das funktioniert leider nicht. und:

    KeepAliveTimeout
    MaxKeepAliveRequests

    macht keinen sinn.



  • es muss auf jedenfall irgendwo ein limit geben welches ich einfach nicht finde. das daten packet ist erneut abgeschnitten. das sagt mir definitiv das irgendwann einfach nicht mehr empfangen wird.

    bloss wo ist das limit und wie nennt es sich 🤡


Anmelden zum Antworten