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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Richard Lynch wrote:

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.

How do I test the results of stream_set_timeout(). I've tried everything I can think of and nothing shows, no error reports, nothing.




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!");
  }
}


I tried something like this earlier, at your suggestion. Problem was that if the server stalls in the middle of a chunk, it just hangs.





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.

That was my thread. I didn't find a solution then and am back to it.

I seems as if stream_set_timeout() ought to be the right function; but, I can't find a way to use it.

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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux