运行两台服务器,服务器1:是Soap Client&服务器2:是肥皂服务器
从服务器1,我使用以下参数向服务器2发送信封:
client_hash(string), unique_code(string), unique_code2(string), query_id(整数), 参数(字符串)
参数将是一个json字符串,它将包含: file_name(string), file_mime(string), file_content(string:base64 file encoded), file_size(整数)
由于某种原因,如果文件大于700kb,php将通过SoapFault未知错误。虽然任何小的都可以。但
尝试使用Wireshark调试它,发送信封但在0.5234秒后连接已关闭。
所以我已经尝试过各种方法来增加双方相关的php变量限制,但仍然相同,
知道还有什么可以限制连接吗?
注意:
关于PHP:
post_max_size
upload_max_filesize
已经是15M
和mysql:
[mysqld]
local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
innodb_buffer_pool_size=10M
innodb_additional_mem_pool_size=10M
innodb_log_buffer_size=10M
innodb_thread_concurrency=2
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
sql_mode=NO_ENGINE_SUBSTITUTION
long_query_time=1
max_allowed_packet=500M
log-slow-queries=/var/log/mysql-slow-query.log
答案 0 :(得分:1)
几个月前,我们遇到了大型SOAP请求的类似问题。经过几个小时的调查后,我们看到了Transfer-Encoding
- 标题的差异。一个小请求正在使用gzip传输编码,而大请求正在使用分块编码(您可以使用Wireshark或SOAPUI客户端进行检查)。
您是否与其他SOAP客户端(如SOAPui)存在相同的问题,或者仅与本机SoapClient存在问题?!如果您在任何SOAP客户端中收到错误,则看起来问题是服务器端问题。我知道一些较旧的nginx版本已经知道了分块编码的问题......
如果您只使用本机SoapClient收到此错误:您是否使用跟踪参数启动SoapClient?因为我认为unkown错误有这样的消息:“错误获取http正文,无内容长度,连接已关闭或分块数据”:
try {
$client=new SoapClient("your wsdl",array('trace'=>TRUE));
} catch(SoapFault $error) {
print_r($error);
}
如果您收到有关内容长度的错误,可以通过设置协议版本来修复它:
$client = new SoapClient("your wsdl",
array(
'trace' => 1,
'stream_context' => stream_context_create(array('http' => array('protocol_version' => 1.0) ) )
)
);
如果问题与其中一个服务器/客户端分块编码问题无关,请添加一些(服务器)信息。
答案 1 :(得分:1)
在soap服务器幻灯片的php.ini上尝试以下设置。确保根据您的方案调整参数。最有可能这些应该没问题。
post_max_size = 1024M ; Maximum size of POST data that PHP will accept.
max_execution_time = 7200 ; Maximum execution time of each script, in seconds
max_input_time = 7200 ; Maximum amount of time each script may spend parsing request data
memory_limit =1024M ; Maximum amount of memory a script may consume
file_uploads = On ; Whether to allow HTTP file uploads.
upload_max_filesize = 1024M ; Maximum allowed size for uploaded files.
答案 2 :(得分:1)
在服务器上,您可能需要添加:use_soap_error_handler();
以使服务器返回error-repsonse并在其中包含错误消息,如果错误源自服务器。
这可能会帮助您获得比" SoapFault未知错误更好的错误消息"。
答案 3 :(得分:1)
post_max_size = 1024M ; Maximum size of POST data that PHP will accept.
max_execution_time = 7200 ; Maximum execution time of each script, in seconds
max_input_time = 7200 ; Maximum amount of time each script may spend parsing request data
memory_limit =1024M ; Maximum amount of memory a script may consume