curl timeout vs socket timeout

curl timeout vs socket timeout

am 28.01.2008 22:56:35 von Ravi Menon

Hi,

We have two versions of client code, one using curl, and other one
using raw sockets via fsockopen(), and
we use the following code to set the i/o timeouts:

1) curl:

..
..
curl_setopt( $handle, CURLOPT_TIMEOUT, 1 );
..
..
$resp = curl_exec($handle)


2) sockets:

stream_set_timeout( $sock, 1);

Here we use frwrite() and fread() to send the request and read the
response respectively.


In (1), how is the timeout applied - is it:

a) timeout includes the entire curl_exec() call - the combined socket
write() ( to send the request ) and
the read() ( read the response ) calls.

or

b) timeout is independently applied to write() and read() end respectively.

Some of our tests seem to indicate it is (a).


In (2), I am assuming the stream timeout is applied at each i/o call
independently for fwrite() and fread() - I am pretty
much certain on this as this is how it would map to underlying C calls.....


It will be good to get a confirmation on our doubts.

Thanks,
Ravi

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: curl timeout vs socket timeout

am 28.01.2008 23:19:02 von List Manager

Ravi Menon wrote:
> Hi,
>
> We have two versions of client code, one using curl, and other one
> using raw sockets via fsockopen(), and
> we use the following code to set the i/o timeouts:
>
> 1) curl:
>
> .
> .
> curl_setopt( $handle, CURLOPT_TIMEOUT, 1 );

From the manual
CURLOPT_TIMEOUT
The maximum number of seconds to allow cURL functions to execute.

Notice: "functions", I would take this as the entire process.


> .
> .
> $resp = curl_exec($handle)
>
>
> 2) sockets:
>
> stream_set_timeout( $sock, 1);

From the manual

Set timeout period on a stream

This would tell me that it is on the entire process, not just one
function call like fwrite() or fread().

>
> Here we use frwrite() and fread() to send the request and read the
> response respectively.
>
>
> In (1), how is the timeout applied - is it:
>
> a) timeout includes the entire curl_exec() call - the combined socket
> write() ( to send the request ) and
> the read() ( read the response ) calls.
>
> or

True for both

>
> b) timeout is independently applied to write() and read() end respectively.

False for both

>
> Some of our tests seem to indicate it is (a).
>
>
> In (2), I am assuming the stream timeout is applied at each i/o call
> independently for fwrite() and fread() - I am pretty
> much certain on this as this is how it would map to underlying C calls.....
>
>
> It will be good to get a confirmation on our doubts.
>
> Thanks,
> Ravi
>

This is what I have experienced at least.

--
Jim Lucas

"Some men are born to greatness, some achieve greatness,
and some have greatness thrust upon them."

Twelfth Night, Act II, Scene V
by William Shakespeare

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: curl timeout vs socket timeout

am 31.01.2008 02:23:44 von Richard Lynch

On Mon, January 28, 2008 3:56 pm, Ravi Menon wrote:
> 1) curl:
>
> .
> .
> curl_setopt( $handle, CURLOPT_TIMEOUT, 1 );
> .
> .
> $resp = curl_exec($handle)
>
>
> 2) sockets:
>
> stream_set_timeout( $sock, 1);

This is only for AFTER you've already opened up the socket.

If you want a timeout on the opening, the setting is in php.ini, or
you can just use ini_set() right before the fsockopen.

> In (1), how is the timeout applied - is it:
>
> a) timeout includes the entire curl_exec() call - the combined socket
> write() ( to send the request ) and
> the read() ( read the response ) calls.
>
> or
>
> b) timeout is independently applied to write() and read() end
> respectively.
>
> Some of our tests seem to indicate it is (a).

You'd probably have to ask the cURL folks...

> In (2), I am assuming the stream timeout is applied at each i/o call
> independently for fwrite() and fread() - I am pretty
> much certain on this as this is how it would map to underlying C
> calls.....

Almost for sure, it applies to any given fwrite/fread.

Actually, probably at an even lower level, to any given packet
sent/received within an fwrite/fread

> It will be good to get a confirmation on our doubts.

--
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some indie artist.
http://cdbaby.com/from/lynch
Yeah, I get a buck. So?

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php