Hallo,
ich habe mit nusoap (0.7.2) einen Webservice zum updaten eines Webshops realisiert. Die Daten kommen aus der Wawi, worauf ich keinen Einfluss habe(das macht jemand anderes). Das funktioniert auch soweit wie es soll, nur wenn ich anscheinend zu viele Daten sende, passiert gar nichts. Bei einem Test mit 44 Artikeln ist alles wunderbar, bei 7000 Artikeln nicht. Es werden XML-Daten in der Größenordnung 6,5MB übertragen, die auch soweit ersichtlich korrekt sind, aber die Funktion zum updaten (updateProduct) wird gar nicht aufgerufen. In den Logfiles steht trotz E_ALL keinerlei Fehler. Auch Speicher wurde großzügig zur Verfügung gestellt(memory_limit 256M), es kommt aber auch keinerlei Fehlermeldung bezüglich Speicherproblemen. Gibt es bekannte Beschränkungen bei nusoap?
Ersichtlich ist das ganze, weil einmal die Rohdaten und einmal das daraus entstandene Array in eine Datei geschrieben werden soll, was wie gesagt bei wenigen Artikeln klappt (beide Dateien), bei vielen nicht (nur die rawdata.txt).
Hier der dazugehörige PHP-Code(die Deklaration des Artikelarrays habe ich weggelassen):
PHP-Code:
error_reporting(E_ALL);
include('includes/application_top.php'); //gehört zum Shop
// Pull in the NuSOAP code
require_once('./lib/nusoap.php');
// Create the server instance
$server = new soap_server();
// Initialize WSDL support
$server->configureWSDL('hellowsdl2', 'urn:hellowsdl2');
// Register the data structures used by the service
// Register the method to expose
$server->register('updateProduct', // method name
array('artikeln' => 'tns:artikeln', 'login' => 'tns:login'), // input parameters
array('return' => 'tns:SweepstakesGreeting'), // output parameters
'urn:hellowsdl2', // namespace
'urn:hellowsdl2#hello', // soapaction
'rpc', // style
'encoded', // use
'Update a product' // documentation
);
// Define the method as a PHP function
function updateProduct($products, $login) {
ob_start();
print_r($products);
$var = ob_get_contents();
ob_end_clean();
$fp = fopen('products.txt', 'w+');
fputs($fp, $var . "\n");
fclose($fp);
}
// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$fp = fopen('rawdata.txt', 'w+');
fputs($fp, $HTTP_RAW_POST_DATA . "\n");
fclose($fp);
$server->service($HTTP_RAW_POST_DATA);
exit();