在请求webservices时,在php中使用set_time_limit是否足够?

时间:2010-06-19 15:56:11

标签: php

假设我需要在同一个php函数中多次调用webservice,以避免因为某些原因webservice失败而导致我的页面挂出,这对于php中的set_time_limit是否足够?什么是最佳实践?

另外我刚看完set_time_limit在safe_mode中不起作用,那么我应该使用什么?

2 个答案:

答案 0 :(得分:1)

根据您调用Web服务的方式,您可以指定超时。

  • 使用http包装器,连接超时的timeout包装器上下文选项。
  • 如果连接已经建立并且您正在操作PHP流,则可以使用stream_set_timeout()指定超时。
  • 使用curl,有options CURLOPT_TIMEOUTCURLOPT_CONNECTTIMEOUT及其毫秒变体。
  • 对于SoapClient,你可以传递construction一个流上下文,虽然我不知道它的选项(我想它们可能与http包装器相同 - 我会稍后检查一下,然后我将更新答案。)通过代码检查,此流上下文将传递到传输流(tcpssl),因此无法使用设置超时。 SoapClient的超时可以由changing the property _connection_timeout设置。

答案 1 :(得分:0)

这取决于您如何调用该服务。套接字和流具有用于设置套接字的连接超时或一般超时的参数,这有很大帮助。

您可以查看http://php.net/manual/en/function.stream-set-timeout.php,如果使用套接字,还可以查看套接字手册。