Я использую NuSOAP на PHP 5.2.6, и я вижу, что максимальный размер сообщения составляет всего 1000 байтов (что делает его трудным сделать что-либо значимое). Является ли это установленным в WSDL конечной точки или это что-то, что я могу настроить в NuSOAP?Как определяется максимальный размер сообщения SOAP?
ответ
Относительно FUD о «пределе 1000 байтов» ... Я искал исходный код nusoap_client и обнаружил, что предел действует только для вывода отладки .
Это означает, что все данные обрабатываются и передаются в webservice (независимо от его размера), но в журнале отладки отображаются только первые 1000 байтов (или более точно: символы).
Вот код:
$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);
Как вы можете ясно видеть, getHTTPBody()
вызов использует весь $soapmsg
, и только выход отладки ограничен первые 1000 символов. Если вы хотите изменить это, просто измените вызов substr()
в соответствии с вашими потребностями или просто замените его на $soapmsg
(так что все также отображается на выходе отладки).
Это не должно иметь абсолютно никакого отношения к какому-либо реальному пределу на фактически отправленные данные. Разумеется, могут быть и другие факторы, фактически ограничивающие размер того, что вы можете отправить (например,ограничение RAM, установленное для вашего скрипта PHP, ограничения вашей реализации HTTP или нехватка доступной виртуальной памяти), но считать само собой разумеющимся, нет никакой вещи, как «ограничение 1000 байт» для данных, которые вы можете отправить с помощью NuSOAP.
Я только слегка знаком с PHP и никогда не использовал пакет NuSOAP вообще. Однако размер сообщения SOAP должен ограничиваться только транспортной средой. В случае HTTP он должен быть в значительной степени неограниченным (ограничение 16384 байт в форме запросов POST происходит не из-за SOAP, это из ограничений браузера (которые могут фактически не существовать больше, но я не знаю наверняка)).
Я бы рекомендовал найти контактный адрес для авторов/сопровождающих компаний NuSOAP и задать их напрямую. Если в WSDL нет что-то (и я ничего не помню в спецификации WSDL, которая ограничивала бы отдельные параметры размера тела сообщения ... индивидуальными параметрами (через грань XML-схемы), но не общим телом), то ограничение казалось бы, в наборе инструментов.
В производственной коробке мы используем встроенные мыльные функции PHP 5.2.5 как сервер и NuSoap на PHP 4 и успешно передали сообщения размером более 1 МБ.
Я не думаю, что существует ограничение в любом продукте, но вы должны проверить настройки в php.ini для
max_input_time (defaults to 60)
Это время, каждый скрипт может разобрать ввод. Если время заканчивается до завершения синтаксического анализа, скрипт даже не запускается.
Sidenote: Если возможно, я предлагаю перейти на классы расширения PHP SoapClient/SoapServer. NuSoap зарекомендовал себя не очень надежным в тяжелых ситуациях, особенно когда речь заходит о кеше. Иногда мы видели, что NuSoap просто «забывал» определения wsdl и работал в режиме no-wsdl. Weird ...
Вы не сказали, что отправляете или получаете сообщения SOAP. Если вы отправляете, я проверю, что NuSOAP отправляет через POST, а не GET (вам, вероятно, придется копать код, чтобы увидеть, я нашел документацию разреженной). Если вы получаете, проверьте настройки PHP.INI для таких вещей, как размер памяти и данных. На самом деле, проверьте свои ограничения на память, в любом случае - NuSOAP - довольно головоломка памяти, IIRC.
Я думаю, что размер сообщения будет ограничен ограничением памяти PHP, чем некоторым жестко заданным значением. По крайней мере, я мог бы отправить строку 6.5MB без каких-либо проблем. Когда я попытался отправить строку 8MB, у меня появилось исключение из памяти внутри nusoap.php (у моего сервера есть ограничение на 64 МБ для PHP).
- 1. Каков максимальный размер входного параметра сообщения SOAP
- 2. Исключения: максимальный размер сообщения
- 3. максимальный размер сообщения электронной почты
- 4. Silverlight & WCF: максимальный размер сообщения
- 5. Централизованный rsyslog: максимальный размер сообщения
- 6. Максимальный размер сообщения о фиксации
- 7. Каков максимальный размер сообщения RabbitMQ?
- 8. Максимальный размер сообщения Apache Thrift
- 9. Ошибка: 552 5.3.4 Размер сообщения превышает фиксированный максимальный размер сообщения
- 10. WCF MaxReceivedMessageSize: максимальный размер сообщения квоты превышены
- 11. Каков максимальный размер для ответа SOAP для JAX-WS?
- 12. Максимальный размер сообщения OpenShift/Node.js может служить?
- 13. Максимальный размер максимального сообщения в шаблоне log4j2
- 14. Максимальный размер сообщения в WebLogic 12.2.1
- 15. Максимальный размер для получения сообщений SOAP в Delphi?
- 16. google protobuf максимальный размер
- 17. jawampa максимальный размер websockt размер?
- 18. как установить максимальный размер для входящего сообщения socket.io
- 19. Как изменить максимальный размер сообщения с клиентской стороны в SMTP
- 20. Как изменить максимальный размер входящего текстового сообщения CometD
- 21. Как измерить максимальный размер объекта, если известен максимальный размер кучи?
- 22. C как определяется размер кода?
- 23. Размер приложения, как он определяется
- 24. BigQuery максимальный размер строки
- 25. Максимальный размер очередей актеров?
- 26. Как перехватывать сообщения SOAP
- 27. NSUbiquitousKeyValueStore максимальный размер
- 28. BlockingCollection Максимальный размер
- 29. Превышение объема хранения. Ответ сервера: 5.3.4 Размер сообщения превышает фиксированный максимальный размер сообщения
- 30. Превышение объема хранения. Ответ сервера: 4.3.1 Размер сообщения превышает фиксированный максимальный размер сообщения