|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2009-06-17 14:18 UTC] giunta dot gaetano at gmail dot com
Description: ------------ The socket timeout option for soap clients is only respected when executing calls, but not when fetching the wsdl itself. This makes it quite hard to use remote wsdl files and provide to the end user an interface with a definite timeout (eg. 5 secs). Current code does not seem to use the timeout value in c function get_sdl in php_sdl.c Reproduce code: --------------- create a soap client pointing to a wsdl on an inexisting server set connection_timeout option to 5 in client constructor Expected result: ---------------- error msg after 5 secs Actual result: -------------- error msg after 1 min PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 05:00:01 2025 UTC |
Thank you for your bug report. The connection_timeout option defines a timeout in seconds for the connection to the SOAP service. This option does not define a timeout for services with slow responses. To limit the time to wait for calls to finish the default_socket_timeout setting is available. <?php // Wait one second for connection when retrieving WSDL: ini_set('default_socket_timeout', 1); new SoapClient('http://123.123.123.123/bla.wsdl'); ?>Thanks for your comment, that's exactly what I did for my needs. Still I find it quite cumbersome (and counterintuitive). Here's a better syntax btw, especially when creating a library and not just a one-page app <?php ... // Wait one second for connection when retrieving WSDL: $deftimeout = ini_get( 'default_socket_timeout' ); ini_set('default_socket_timeout', 1); try { $c = new SoapClient('http://123.123.123.123/bla.wsdl'); ini_set( 'default_socket_timeout', $deftimeout ); ... } catch (exception $e) { ini_set( 'default_socket_timeout', $deftimeout ); ... } ?>