This article introduces the use of curl in PHP, the time-out setting of the detailed method, you see, we hope to have a certain help. There are many ways to access HTTP, such as curl, Socket, file_get_contents (). When you access HTTP, you need to consider the issue of timeouts. One, Curl Access HTTP curl is commonly used to access the HTTP protocol interface Lib Library, high performance, there are some features such as concurrency support. curl_setopt ($ch, opt) can set some timeout settings, mainly including: * (important) Curlopt_timeout sets the maximum number of seconds that curl is allowed to execute. * (important) Curlopt_timeout_ms sets the maximum number of milliseconds that curl is allowed to perform. (added in Curl 7.16.2.) Available from PHP 5.2.3) Curlopt_connecttimeout the time to wait before initiating the connection, or infinite wait if set to 0. Curlopt_connecttimeout_ms the time, in milliseconds, that the connection is trying to wait. If set to 0, the wait is infinite. (added in Curl 7.16.2.) Available starting from PHP 5.2.3) Curlopt_dns_cache_timeout sets the time to save DNS information in memory by default of 120 seconds. 1,curl normal second-level timeout: $ch = Curl_init (); curl_setopt ($ch, Curlopt_url, $url); curl_setopt ($ch, curlopt_returntransfer,1); curl_setopt ($ch, curlopt_timeout,60); Only need to set a number of seconds can be curl_setopt ($ch, Curlopt_httpheader, $headers); curl_setopt ($ch, curlopt_useragent, $defined _vars[' http_user_agent ');2,curl normal second time-out use: curl_setopt ($ch, curlopt_timeout,60);3,curl If a millisecond timeout is required, you need to add: Curl_easy_setopt (curl, curlopt_nosignal,1l); or curl_setopt ($ch, curlopt_nosignal,true);//support for millisecond-level timeout settingsExample of Curl timeout setting. 1,curl An example of a millisecond-level timeout:
0) { echo "CURL Error ($curl _errno): $curl _error\n"; } else{ echo "Data received: $data \ n"; } } else{ //Server sleep (ten); echo "done."; }
Tip: 1,curl version >= libcurl/7.21.0 version, the millisecond time-out is certain to take effect, remember. 2,curl_multi millisecond time-out problem, a single access is to support MS-level timeouts, Curl_multi parallel tune multiple will not be allowed. Stream Processing mode access HTTP In addition to curl, the HTTP protocol is often handled using the Fsockopen, or file operation functions. Here's the timeout setting for this. The general connection timeout can be set directly, but the stream read timeout needs to be handled separately. You can refer to the following implementation code:
$this->_intreadtimeoutus) { returnfalse; }
Or use the built-in stream handler functions Stream_set_timeout () and Stream_get_meta_data () Processing:
File_get_contents timeout:
Array ( ' timeout ' =>5//sets a time-out, in seconds ) ; $ctx = Stream_context_create ($timeout); $text = file_get_contents ("http://example.com/", 0, $ctx);
fopen Timeout:
Array ( ' timeout ' = 5//Set a time-out, in seconds ) ; $ctx = Stream_context_create ($timeout); if ($fp = fopen ("http://example.com/", "R", False, $ctx)) {while ($c = Fread ($fp, 8192)) { echo $c; } fclose ($FP); }
|