Frage

Ich verwende NuSOAP unter PHP 5.2.6 und sehe, dass die maximale Nachrichtengröße nur 1000 Bytes beträgt (was es schwierig macht, etwas Sinnvolles zu tun).Ist dies in der WSDL des Endpunkts festgelegt oder kann ich dies in NuSOAP konfigurieren?

War es hilfreich?

Lösung

In Bezug auf die FUD über ein „1000-Byte-Limit“ ...Ich habe den Quellcode von nusoap_client nachgeschlagen und festgestellt, dass das Limit nur für gilt Debug-Ausgabe.

Das bedeutet, dass alle Daten verarbeitet und an den Webservice weitergeleitet werden (unabhängig von ihrer Größe), jedoch nur die ersten 1000 Bytes (oder genauer:Zeichen) werden im Debug-Protokoll angezeigt.

Hier ist der Code:

$this->debug('SOAP message length=' . strlen($soapmsg) . ' contents (max 1000 bytes)=' . substr($soapmsg, 0, 1000));

// send
$return = $this->send($this->getHTTPBody($soapmsg),$soapAction,$this->timeout,$this->response_timeout);

Wie Sie deutlich sehen können, ist die getHTTPBody() Anruf nutzt das Ganze $soapmsg, und nur die Debug-Ausgabe ist auf die ersten 1000 Zeichen beschränkt.Wenn Sie dies ändern möchten, ändern Sie einfach die substr() Rufen Sie an, um es an Ihre Bedürfnisse anzupassen, oder ersetzen Sie es einfach durch $soapmsg (also wird auch alles in der Debug-Ausgabe angezeigt).

Dies sollte absolut nichts mit einer tatsächlichen Begrenzung der tatsächlich gesendeten Daten zu tun haben.Es kann natürlich auch andere Faktoren geben, die die Größe dessen, was Sie senden können, tatsächlich begrenzen (z.G.B. das für Ihr PHP-Skript festgelegte RAM-Limit, Einschränkungen Ihrer HTTP-Implementierung oder der Mangel an verfügbarem virtuellen Speicher), aber gehen Sie davon aus, dass es keine „1000-Byte-Grenze“ für die Daten gibt, die Sie mit NuSOAP senden können.

Andere Tipps

Ich bin mit PHP nur passtlos vertraut und habe das Nusoap-Paket noch nie verwendet. Die Größe einer Seifennachricht sollte jedoch nur durch das Transportmedium begrenzt werden. Im Fall von HTTP sollte es ziemlich unbegrenzt sein (die Einschränkung von 16384 Bytes in Form von Postanfragen ist nicht auf Seife zurückzuführen, sondern aus Browser -Einschränkungen (was tatsächlich nicht mehr existiert, aber ich weiß nicht sicher) ).

Ich würde empfehlen, eine Kontaktadresse für die Autoren/Betreuer von Nusoap zu finden und sie direkt zu fragen. Es sei denn, es gibt etwas in der WSDL (und ich erinnere mich an nichts in der WSDL würde im Toolkit zu sein.

In einem Produktionsbox verwenden wir die integrierten SOAP-Funktionen von PHP 5.2.5 als Server und NUSOAP auf PHP 4 und haben erfolgreich Nachrichten über 1 MB übertragen.

Ich glaube nicht

max_input_time        (defaults to 60)

Dies ist die Zeit, in der jedes Skript Eingaben analysieren darf. Wenn die Zeit vor dem Parsen abgeschlossen ist, wird das Skript nicht einmal ausgeführt.

Eine Nebenbemerkung: Wenn möglich, schlage ich vor, auf die PHP -Erweiterungsklassen von SOAPClient/SoapServer zu wandern. Nusoap hat sich in schweren Ladungssituationen nicht sehr zuverlässig erwiesen, insbesondere wenn es um den Cache geht. Manchmal sahen wir Nusoap einfach "vergessen", um WSDL-Definitionen zu "vergessen" und im Nicht-WSDL-Modus zu arbeiten. Seltsam...

Sie haben nicht gesagt, ob Sie SOAP -Nachrichten senden oder empfangen. Wenn Sie senden, würde ich nachsehen, ob Nusoap nicht per Post schickt, anstatt zu bekommen (Sie müssen wahrscheinlich in den Code eingraben, um die Dokumentation spärlich zu finden). Wenn Sie empfangen, überprüfen Sie Ihre PHP.ini -Einstellungen auf Speicher- und Datengröße. Überprüfen Sie trotzdem Ihre Speichergrenzen - Nusoap ist ein ziemlicher Speicherschwein, IIRC.

Ich denke, die Nachrichtengröße wird eher durch ein PHP -Speichergrenze als durch einen festcodierten Wert begrenzt. Zumindest könnte ich ohne Probleme eine 6,5 MB -Zeichenfolge senden. Als ich versuchte, eine 8 -MB -Zeichenfolge zu senden, bekam ich eine Ausnahme in Nusoap.php außerhalb des Speichers (mein Server hat 64 MB Limit für PHP).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top