soap一个很奇怪的异常,时不时的出现,还没有规律。。。
经过半天的折腾,发现一个php的bug….
libxml_disable_entity_loader(true); ini_set ( soap.wsdl_cache_enabled, 0 );
这两句执行的情况下,再去执行soap的client会报异常,原因是报文的,最外层的<?xml 没了,导致直接报错,抛出标题所说的异常。更奇葩的一个问题是,如果php有个线程执行了上述两句,另一个php线程在不设置的情况下,直接执行
ini_set ( soap.wsdl_cache_enabled, 0 );
和soap client的调用还会报上面的错。大概猜到是配置有缓存,导致的。。。
验证方法:报错的两句一次发起1000条请求。另一个线程纯soap就会异常
一般情况下没人用到…
libxml_disable_entity_loader(true);
这边调用到微信发红包。。里面有出现,好死不死,提交xml用拼的。接收xml用文艺的 xml转 json 加上了该句….
解决方法:
在调用soapclient时,前面执行句
libxml_disable_entity_loader(true);