Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Soap连接立即重置,无响应_Php_Http_Soap_Connection - Fatal编程技术网

PHP Soap连接立即重置,无响应

PHP Soap连接立即重置,无响应,php,http,soap,connection,Php,Http,Soap,Connection,我对PHP Soap相当陌生,但我相信我已经掌握了它。我的问题很奇怪,我已经在Apache/cent OS服务器上安装了soap php模块。玩了一段时间后,我能够连接到一个公共web服务并将其与PHP方法一起使用(使用SoapClient()),所以我不认为这是一个配置错误 当我尝试连接到我想要使用的web服务时,它位于本地服务器上。连接立即重置,并且我尝试使用的web服务没有响应 我自己也曾试图解决这个问题,但在检查其他方面我遇到了僵局 我知道WSDL存在并且可以访问,因为当我将URL放入浏

我对PHP Soap相当陌生,但我相信我已经掌握了它。我的问题很奇怪,我已经在Apache/cent OS服务器上安装了soap php模块。玩了一段时间后,我能够连接到一个公共web服务并将其与PHP方法一起使用(使用SoapClient()),所以我不认为这是一个配置错误

当我尝试连接到我想要使用的web服务时,它位于本地服务器上。连接立即重置,并且我尝试使用的web服务没有响应

我自己也曾试图解决这个问题,但在检查其他方面我遇到了僵局

我知道WSDL存在并且可以访问,因为当我将URL放入浏览器时,我可以看到它。我知道这项服务正在运行,因为其他应用程序正在使用它

我认为这不是PHP/Apache设置问题,因为我可以连接到其他web服务并访问其中的方法

但是,当我将测试应用程序指向我想要使用的服务时。我立即得到“连接已重置”。我使用了http筛选程序,我可以看到我试图访问的机器根本没有响应,就好像它不在那里一样。下面是嗅探日志

客户端->服务器192.168.1.190->74.xxx.xxx.xxx

GET/contact/pipeline/bettertest.php HTTP/1.1 主持人:www.harms-software.com 用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;rv:14.0)Gecko/20100101 Firefox/14.0.1 接受:text/html、application/xhtml+xml、application/xml;q=0.9,/;q=0.8 接受语言:en-us,en;q=0.5 接受编码:gzip,deflate 连接:保持活力 Cookie:userinfo=XXXXXX%2CAdmin__utma=266616727.1802384666.1343229893.1346876009.1346935926.113__utmz=266616727.1346763531.101.17.utmcsr=millenniumcentral.com | utmccn=(转介)| utmcmd=转介| utmcct=/__UNA=b0971f8-138bebd9a81-7d1a81ba-869__utmc=266616727__atuvc=60%7C32%2C0%7C33%2C0%7C34%2C0%7C35%2C1%7C36;标杆额定值=1750

没有响应头,因为 “连接已重置
加载页面时已重置与服务器的连接。“

现在,通常我会假设两台服务器之间存在端口阻塞或其他连接问题,但我已经检查过了。端口80在承载WSDL的计算机上打开。我在浏览器中查看WSDL也没有问题,因此我知道服务器在那里,可以在端口80上访问

下面是我正在尝试的php测试代码

<?php

    ini_set("soap.wsdl_cache_enabled", "0");

    $log = fopen("debug.log","w");
    fwrite($log,"about to create soap object!");   
    $client = new SoapClient("http://millennium.harms-software.com/MillenniumPipeline/MillenniumSDK.asmx?wsdl", array("trace" => 1, "soap_version" => SOAP_1_1, cache_wsdl =>  WSDL_CACHE_NONE));
    fwrite($log,"created soap object!");


    $logonArgs = array('User' => 'testing', 'Password' => 'temppass');

    try{
            $logonResult = $this->client->Logon($logonArgs);

    }catch(SoapFault $soapFault){
            //if failed, display soap message sent, received, and the soapfault generated

            echo "Fault!!!";
            var_dump($soapFault);
            echo "<b>Request</b> :<br>", htmlentities($this->client->__getLastRequest()), "<br>";
            echo "<b>Response</b> :<br>", htmlentities($this->client->__getLastResponse()), "<br>";

    }

?>

我尝试将代码写入一个平面文件,以查看代码是否正在执行,并且在创建soap对象后代码似乎立即消失。然而,我将这个完全相同的脚本指向另一个web服务,它工作得很好


此时,我不知道是什么原因导致服务器重置了连接。如果有人有类似的问题,请告诉我。

我也遇到了同样的问题。禁用xdebug PHP扩展(如果启用),以查看这是否解决了您的问题。我仍在尝试结合xdebug查找导致此问题的潜在错误,但它似乎与缓慢或无响应的SOAP服务有关,并且对您来说可能是间歇性的。我认为它实际上是由超时问题引起的。承载wsdl的服务器对请求它的客户机有非常高的ping,虽然它在80%的时间内工作,但在20%的时间内服务器不会响应,我们会收到一个连接重置错误。不幸的是,我们无法控制托管服务的服务器,因此无法延长超时时间或其他任何操作。