我在PHP 5.2.6上使用NuSOAP,我看到最大郵件大小隻有1000字節(這使得做任何有意義的事情都很困難)。這是設置在端點的WSDL還是我可以在NuSOAP中配置?如何確定SOAP消息的最大大小?
回答
關於有關「1000字節限制」的FUD ...我查找了nusoap_client源代碼,發現該限制僅對調試輸出有效。
這意味着所有的數據都被處理並傳遞給web服務(不管其大小),但調試日誌中只顯示前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
(因此所有內容都顯示在調試輸出中)。
這應該與實際發送數據的實際限制完全無關。當然可能有其他因素實際上限制了你可以發送的內容的大小(例如,爲您的PHP腳本設置的RAM限制,HTTP實現的限制或可用虛擬內存不足),但認爲理所當然的是,對於可以使用NuSOAP發送的數據,「1000字節限制」不存在。
我只是很熟悉PHP,從來沒有使用過NuSOAP包。但是,SOAP消息的大小應該僅受傳輸介質的限制。在HTTP的情況下,它應該是非常無限的(表單POST請求中的16384字節的限制不是由於SOAP,而是來自瀏覽器限制(實際上可能不再存在,但我不確定) )。
我建議找到NuSOAP的作者/維護者的聯繫地址,並直接詢問他們。除非WSDL中有東西(並且我沒有記得WSDL規範中會限制整個消息體大小......個別參數(通過XML Schema方面)的任何內容,但是不記錄整體),那麼限制似乎是在工具箱中。
在生產環境中,我們使用PHP 5.2.5內置的Soap函數作爲服務器,在PHP 4上使用NuSoap,併成功傳輸大於1 MB的消息。
我不認爲有任一產品的限制,但你應該檢查你的設置php.ini中的
max_input_time (defaults to 60)
這是每個腳本允許解析輸入的時間。如果在解析完成之前時間到了,腳本甚至不會運行。
旁註:如果可能,我建議遷移到SoapClient/SoapServer PHP擴展類。 NuSoap在重負載情況下證明自己不太可靠,特別是在緩存方面。有時我們看到NuSoap只是「忘記」了wsdl的定義,並以非wsdl模式工作。奇怪...
你還沒有說過你是否發送或接收SOAP消息。如果你發送了,我會檢查NuSOAP是通過POST發送而不是GET(你可能需要深入代碼才能看到;我發現文檔稀疏)。如果你正在接收,檢查你的PHP.INI設置,如內存和數據大小。實際上,檢查你的內存限制,無論如何 - NuSOAP是一個相當的記憶豬,IIRC。
我認爲郵件大小將受限於PHP內存限制,而不是一些硬編碼值。至少我可以發送一個6.5MB的字符串,沒有任何問題。當我試圖發送一個8MB的字符串時,我在nusoap.php裏面發現內存不足(我的服務器對PHP有64MB限制)。
- 1. VxWorks上strerror_r的最大消息大小
- 2. Mulesoft Dataweave,LDAP to SOAP大消息以特定大小截斷。大小限制?
- 3. Biztalk SOAP適配器最大消息數
- 4. 最大提交消息大小
- 5. 的最大消息和最大郵件大小
- 6. Domino Webservice提供程序 - SOAP消息的最大大小是多少?
- 7. System.ServiceModel.CommunicationException - 在大消息大小
- 8. 如何在SOAP消息中寫「小於」和「大於」?
- 9. 如何減少WCF soap消息大小以節省帶寬?
- 10. 如何在編碼器級別確定WCF消息大小
- 11. WCF中的消息大小「在線」WCF中的消息大小
- 12. SQS消息大小
- 13. WCF消息大小
- 14. JMS消息大小
- 15. 確定Android OpenGLES中的最大/最小紋理大小限制
- 16. 如何確定MySQL中的最大事務大小?
- 17. GridPanel如何確定大小?
- 18. 傳入消息的最大消息大小配額(65536)已被超出。 Silverlight + WCF
- 19. 如何指定最大下載大小?
- 20. WCF tcp綁定消息的大小
- 21. 優化PHP代碼(試圖確定最小/最大/大小寫)
- 22. 消除最小和最大
- 23. sendgrid當時發送消息的最大大小
- 24. 找出AF_UNIX + SOCK_SEQPACKET的最大消息大小
- 25. webRTC數據通道消息的最大大小是多少?
- 26. NSQ消息的最大大小是多少?
- 27. SockJS消息的最大大小是多少?
- 28. 在數據表中顯示最大大小時的消息
- 29. OpenShift/Node.js可以提供的最大消息大小?
- 30. 什麼是SOAP消息的輸入參數的大小限制