Re: stream_set_timeout() stream_get_meta_data() etc...

From: Date: Tue, 08 Feb 2005 20:57:22 +0000
Subject: Re: stream_set_timeout() stream_get_meta_data() etc...
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-208294@lists.php.net to get a copy of this message
Al wrote: > How can I detect that a remote server is hung up on transmitting a http > page and > gracefully handle it? > > The connect is made OK, all I want to do is to make certain that I receive > the > data stream in a given amount of time. For example, if the remote server > is > incredibly slow or hangs in the middle of transmitting the data. That's exactly what stream_set_timeout does, *IF* more than 2 seconds goes by with *NO* data coming through. If you want to put a cap on the total time spent, regardless of the file size, then do more like: > e.g. >> $fp= fopen("http://www.anything.com/foo.html, >> 'rb'); >> if(!fp) {do something different} >> >> stream_set_timeout($fp, 2); >> // >> $status= stream_get_meta_data($fp); $start = time(); while (!feof($fp)){ $data = fread($fp, 10000); //10K chunks, change to suit if (time() - $start > 10){ die("That's too slow!"); } } >> >> if($status[timed_out] {do something}; > > $status[timed_out] never shows anything but 0. I've tried it with a 4mb > file > and the timeout = 1sec. > > error reporting shows nothing. It's as if socket connections don't trigger > timeout errors, including the max_execution_time. > > I've spent some time poking around the php manual and Googling and can't > find > anything appropriate. One ref I found said there is no way to do this. > > Anyone have a suggestion? Please review this exact same issue in the archives from the past week or two. -- Like Music? http://l-i-e.com/artists.htm

« previous php.general (#208294) next »