【问题标题】:PHP Timeout not working on webservicePHP超时不适用于Web服务
【发布时间】:2012-07-07 05:18:57
【问题描述】:

我试图强制 PHP 永远不要尝试通过以下方式连接和发送信息到 web 服务 一段固定的时间。我在下面使用,由于某种原因,它会在允许的时间内运行,我不知道为什么。例如,如果我将其设置为 30 秒,我会发现在某些情况下需要更长的时间。如果需要的时间太长,我需要找到一种 100% 终止连接的方法。

TIA, 会

$intTimeout = $this->getTimeout(); $client = new SoapClient("{$this->url}?WSDL", array('trace' => 0, 'connection_timeout'=>$intTimeout)); 尝试 { $this->response = $client->someService($objPerson); } 捕获(异常 $e){ } $this->restoreTimeout(); 函数getTimeout() { $intTimeout = @$this->timeout ? $this->timeout : 60; $_SESSION['old_sock'] = ini_get('default_socket_timeout'); ini_set('default_socket_timeout', $intTimeout); 返回 $intTimeout; } 函数恢复超时() { $intCurSockTime = @$_SESSION['old_sock']; if($intCurSockTime) ini_set('default_socket_timeout', $intCurSockTime); }

【问题讨论】:

    标签: php web-services


    【解决方案1】:

    问题是:default_socket_timeout是在socket响应之前计数的,只要得到响应,就会一直等待。

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

    类似问题:PHP SoapClient Timeout

    【讨论】:

      猜你喜欢
      • 2013-09-30
      • 2014-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多