Re: Problems with curl timeout setting

Ralph Seward <[email protected]> Thu, 27 Jan 2011 15:17:36 +0000
Newsgroups gmane.comp.web.curl.php
Message-ID <[email protected]>
Re: Problems with curl timeout setting
First, apologies for putting my comments at the top of this discussion - I was just not sure where I should insert it. But, if your timeout problem is PHP related you can work around it by inserting a simple PHP statement at the beginning of your code:








set_time_limit(0);
which effectively removes the time limit imposed by the server's php.ini. (Note that this will not work if PHP is running in safe mode.) See http://php.net/manual/en/function.set-time-limit.php for details on this directive.
Also, at the end of your script you should set the time limit back to something sane, like set_time_limit(30);
RJSeward

>    1. Re: Problems with curl timeout setting (Daniel Stenberg)
>    2. Re: Problems with curl timeout setting ([email protected])
>    3. Re: Problems with curl timeout setting (Daniel Stenberg)
>    4. Re: Problems with curl timeout setting ([email protected])
>    5. Re: Problems with curl timeout setting (Daniel Stenberg)
>    6. Re: Problems with curl timeout setting ([email protected])
>    7. Re: Problems with curl timeout setting (Daniel Stenberg)
>    8. Re: Problems with curl timeout setting ([email protected])
>    9. Re: Problems with curl timeout setting (Daniel Stenberg)
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Wed, 26 Jan 2011 14:40:49 +0100 (CET)
> From: Daniel Stenberg <[email protected]>
> To: curl with PHP <[email protected]>
> Subject: Re: Problems with curl timeout setting
> Message-ID: <[email protected]>
> Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
> 
> On Wed, 26 Jan 2011, [email protected] wrote:
> 
> >> It is also relevant what resolver you're using, as if you use the stock 
> >> *nix resolver, it has a full-second resolution in the time-outs.
> >
> > By resolver do you mean dns? I believe I do not use any resolver because we 
> > connect only using IP?
> 
> Ah, OK, then the resolver is not the key...
> 
> > Also we think that we found something relevant. We think that the servers we 
> > connect to which cause these timeout problems are not the real well known 
> > http servers like apache or nginx. We are pretty sure that the server is 
> > some self written perl code. Is this possible that this server does not 
> > return some important headers which causes this timeout problems? For 
> > example, we connect to server on port 80 and it does not return anything, 
> > (no content whatsoever for 5 seconds, including no headers), can this affect 
> > timeouts working?? We think it can, we will try to test it
> 
> I don't see why it would. libcurl is made to obey the timeout no matter what 
> it is doing, and a funny server shouldn't change that. But obviously there's a 
> problem somewhere...
> 
> -- 
> 
>   / daniel.haxx.se
> 
> 
> ------------------------------
> 
> Message: 2
> Date: Wed, 26 Jan 2011 14:49:54 +0100
> From: [email protected]
> To: curl with PHP <[email protected]>
> Subject: Re: Problems with curl timeout setting
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset=iso-8859-15
> 
> Hello Daniel,
> 
> 
> >> Also we think that we found something relevant. We think that the servers we 
> >> connect to which cause these timeout problems are not the real well known 
> >> http servers like apache or nginx. We are pretty sure that the server is 
> >> some self written perl code. Is this possible that this server does not 
> >> return some important headers which causes this timeout problems? For 
> >> example, we connect to server on port 80 and it does not return anything, 
> >> (no content whatsoever for 5 seconds, including no headers), can this affect 
> >> timeouts working?? We think it can, we will try to test it
> 
> > I don't see why it would. libcurl is made to obey the timeout no matter what 
> > it is doing, and a funny server shouldn't change that. But obviously there's a 
> > problem somewhere...
> 
> 
> what  do  you  think we should do then? Try this from C or command line outside of PHP? Can a php be
> problem  here?  I  very  much  doubt  it  because  it  still uses C code. Nobody else is having such
> problems? Clearly something is wrong here
> 
> -- 
> Best regards,
>  127546                            mailto:[email protected]
> 
> 
> 
> ------------------------------
> 
> Message: 3
> Date: Wed, 26 Jan 2011 17:00:27 +0100 (CET)
> From: Daniel Stenberg <[email protected]>
> To: curl with PHP <[email protected]>
> Subject: Re: Problems with curl timeout setting
> Message-ID: <[email protected]>
> Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII
> 
> On Wed, 26 Jan 2011, [email protected] wrote:
> 
> > what do you think we should do then? Try this from C or command line outside 
> > of PHP?
> 
> Yes. We need to narrow down things.
> 
> I tried this:
> 
> [shell 1]
> $ nc -p 9999 -l
> 
> [shell 2]
> $ curl localhost:9999 -m3
> 
> ... and it timed out after exactly 3000 milliseconds.
> 
> > Can a php be problem here?
> 
> I don't think so.
> 
> -- 
> 
>   / daniel.haxx.se
> 
> 
> ------------------------------
> 
> Message: 4
> Date: Wed, 26 Jan 2011 22:18:32 +0100
> From: [email protected]
> To: curl with PHP <[email protected]>
> Subject: Re: Problems with curl timeout setting
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset=iso-8859-15
> 
> Hello Daniel,
> 
> Wednesday, January 26, 2011, 5:00:27 PM, you wrote:
> 
> > On Wed, 26 Jan 2011, [email protected] wrote:
> 
> >> what do you think we should do then? Try this from C or command line outside 
> >> of PHP?
> 
> > Yes. We need to narrow down things.
> 
> > I tried this:
> 
> > [shell 1]
> > $ nc -p 9999 -l
> 
> > [shell 2]
> > $ curl localhost:9999 -m3
> 
> > ... and it timed out after exactly 3000 milliseconds.
> 
> 
> I  did  some  more research here, first of all I cannot reproduce my problem on command line because
> command  line  does  not  support  milliseconds, and it seems the issue arises only when you specify
> milliseconds!!!
> 
> when  we  changed  CURL options in php into seconds the issue does not arise!! The bug is clearly in
> the millisecond settings but we need milliseconds. I can see many people on google complaining abotu
> this  option  not working correctly. I am desperate here as you see, I am willing to pay for someone
> to fix this for me!!
> 
> Also I find this post of yours: http://comments.gmane.org/gmane.comp.web.curl.library/29210
> where you say
> 
> "CURLOPT_CONNECTTIMEOUT does not really work for the multi interface in any
> released libcurl version. We're working on making sure it works correctly
> for the next release."
> 
> ps. we found similar problem with
> curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT_MS,300);
> 
> we set 500ms but the error message is Connection timed out after 1001 milliseconds
> 
> as I stated earlier I am willing to pay to get this fixed
> 
> 
> 
> -- 
> Best regards,
>  127546                            mailto:[email protected]
> 
> 
> 
> ------------------------------
> 
> Message: 5
> Date: Thu, 27 Jan 2011 00:09:46 +0100 (CET)
> From: Daniel Stenberg <[email protected]>
> To: curl with PHP <[email protected]>
> Subject: Re: Problems with curl timeout setting
> Message-ID: <[email protected]>
> Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII
> 
> On Wed, 26 Jan 2011, [email protected] wrote:
> 
> > I did some more research here, first of all I cannot reproduce my problem on 
> > command line because command line does not support milliseconds, and it 
> > seems the issue arises only when you specify milliseconds!!!
> 
> I don't believe you. I'm convinced the reason is something else.
> 
> > when we changed CURL options in php into seconds the issue does not arise!! 
> > The bug is clearly in the millisecond settings but we need milliseconds.
> 
> There's only one place in the libcurl code that differs between seconds and 
> milliseconds, and that is the code that receives the options. If you set 
> seconds, the code will multiply the number with 1000 and store that internally 
> as milliseconds. Everything internally is done using the single timeout value 
> that is counted in milliseconds.
> 
> > I can see many people on google complaining abotu this option not working 
> > correctly.
> 
> You can find anything searching with Google. That's not an argument that means 
> anything.
> 
> And even if others have had similar or even the exact same problem, that's not 
> helping here either.
> 
> > I am desperate here as you see, I am willing to pay for someone to fix this 
> > for me!!
> 
> I'm willing to work on fixing the bug for free, but I'm not going to run any 
> PHP and I doubt you need PHP to get it. I'd urge you to write up a C program 
> that uses libcurl and that shows the problem happening.
> 
> > "CURLOPT_CONNECTTIMEOUT does not really work for the multi interface in any
> > released libcurl version. We're working on making sure it works correctly
> > for the next release."
> 
> The key words there being "in any released libcurl version" and then you 
> should check the date I wrote that and compare with release dates and you'll 
> see that the statement is no longer true. (Which is kind of related to my 
> comment that you can find everything.)
> 
> But this made me curious. Are you saying you're using the multi interface?
> 
> > as I stated earlier I am willing to pay to get this fixed
> 
> I don't have time or opportunity to take on any new projects at the moment so 
> that someone you can pay will not be me.
> 
> -- 
> 
>   / daniel.haxx.se
> 
> 
> ------------------------------
> 
> Message: 6
> Date: Thu, 27 Jan 2011 00:17:04 +0100
> From: [email protected]
> To: curl with PHP <[email protected]>
> Subject: Re: Problems with curl timeout setting
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset=iso-8859-15
> 
> Hello Daniel,
> 
> Thursday, January 27, 2011, 12:09:46 AM, you wrote:
> 
> > On Wed, 26 Jan 2011, [email protected] wrote:
> 
> >> I did some more research here, first of all I cannot reproduce my problem on 
> >> command line because command line does not support milliseconds, and it 
> >> seems the issue arises only when you specify milliseconds!!!
> 
> > I don't believe you. I'm convinced the reason is something else.
> 
> I wanted to prove to you, but command line tool does not support ms :)
> 
> >> I am desperate here as you see, I am willing to pay for someone to fix this
> >> for me!!
> 
> > I'm willing to work on fixing the bug for free, but I'm not going to run any 
> > PHP and I doubt you need PHP to get it. I'd urge you to write up a C program 
> > that uses libcurl and that shows the problem happening.
> 
> we have no time to write this in C, but seems we have no choice :(
> 
> 
> > But this made me curious. Are you saying you're using the multi interface?
> 
> yes, does it change anything?
> 
> 
> 
> 
> 
> -- 
> Best regards,
>  127546                            mailto:[email protected]
> 
> 
> 
> ------------------------------
> 
> Message: 7
> Date: Thu, 27 Jan 2011 00:19:19 +0100 (CET)
> From: Daniel Stenberg <[email protected]>
> To: curl with PHP <[email protected]>
> Subject: Re: Problems with curl timeout setting
> Message-ID: <[email protected]>
> Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
> 
> On Thu, 27 Jan 2011, [email protected] wrote:
> 
> >> But this made me curious. Are you saying you're using the multi interface?
> >
> > yes, does it change anything?
> 
> Yes it does. A lot. The command line tool doesn't use it for example...
> 
> --
> 
>   / daniel.haxx.se
> 
> 
> ------------------------------
> 
> Message: 8
> Date: Thu, 27 Jan 2011 00:24:11 +0100
> From: [email protected]
> To: curl with PHP <[email protected]>
> Subject: Re: Problems with curl timeout setting
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset=iso-8859-15
> 
> Hello Daniel,
> 
> Thursday, January 27, 2011, 12:19:19 AM, you wrote:
> 
> > On Thu, 27 Jan 2011, [email protected] wrote:
> 
> >>> But this made me curious. Are you saying you're using the multi interface?
> >>
> >> yes, does it change anything?
> 
> > Yes it does. A lot. The command line tool doesn't use it for example...
> 
> 
> okay, what do you propose then? C code using multi? 
> 
> -- 
> Best regards,
>  127546                            mailto:[email protected]
> 
> 
> 
> ------------------------------
> 
> Message: 9
> Date: Thu, 27 Jan 2011 08:43:19 +0100 (CET)
> From: Daniel Stenberg <[email protected]>
> To: curl with PHP <[email protected]>
> Subject: Re: Problems with curl timeout setting
> Message-ID: <[email protected]>
> Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
> 
> On Thu, 27 Jan 2011, [email protected] wrote:
> 
> > okay, what do you propose then? C code using multi?
> 
> Yes. We can probably just edit one of the examples (like this: 
> http://curl.haxx.se/libcurl/c/multi-single.html) with the added timeout values 
> and use against 'nc' to see that it times out accurately.
> 
> --
> 
>   / daniel.haxx.se
> 
> 
> ------------------------------
> 
> _______________________________________________
> curl-and-php mailing list
> [email protected]
> http://cool.haxx.se/cgi-bin/mailman/listinfo/curl-and-php
> 
> 
> End of curl-and-php Digest, Vol 65, Issue 6
> *******************************************

_______________________________________________
http://cool.haxx.se/cgi-bin/mailman/listinfo/curl-and-php