PHP Timeout无法处理webservice

时间:2012-07-06 18:03:33

标签: php web-services

我试图强迫PHP永远不要尝试连接并向Web服务发送信息 一段时间。我在下面使用,由于某种原因,它将在允许的时间内运行,我无法弄清楚为什么。例如,如果我将其设置为30秒,我会发现在某些情况下需要更长的时间。如果需要太长时间,我需要找出一种100%杀死连接的方法。

TIA, 将

    $intTimeout = $this->getTimeout();
        $client = new SoapClient("{$this->url}?WSDL", array('trace' => 0, 'connection_timeout'=>$intTimeout));
        try {
            $this->response = $client->someService($objPerson);
        }
        catch(Exception $e) {

        }
        $this->restoreTimeout();

    function getTimeout()
    {
        $intTimeout = @$this->timeout ? $this->timeout : 60;
        $_SESSION['old_sock'] = ini_get('default_socket_timeout');
        ini_set('default_socket_timeout', $intTimeout);

        return $intTimeout;
    }

    function restoreTimeout()
    {
        $intCurSockTime = @$_SESSION['old_sock'];
        if($intCurSockTime) ini_set('default_socket_timeout', $intCurSockTime);
    }

1 个答案:

答案 0 :(得分:0)

问题是:default_socket_timeout在socket响应之前计数,只要它得到响应,就会永远等待。

这是一个很好的例子,使用curl with timeout作为后备:http://www.darqbyte.com/2009/10/21/timing-out-php-soap-calls/

类似的问题:PHP SoapClient Timeout