Handle time-outs and errors with file()

This is a discussion on Handle time-outs and errors with file() within the PHP General forums, part of the PHP Programming Forums category; I'm using file() to get the contents of a remote page in my script but I cannot find any ...


Go Back   Usenet Forums > PHP Programming Forums > PHP General

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 01-29-2008
John Papas
 
Posts: n/a
Default Handle time-outs and errors with file()

I'm using file() to get the contents of a remote page in my script but
I cannot find any information regarding how I could *gracefully*
handle a broken network connection or even a time-out (slow
connection).

Is there a way?

---
Example:
$menu = file('http://www.remotesite.org/mypage.html');
foreach ($menu as $line_num => $line) {
echo $line."\n";
}
Reply With Quote
  #2 (permalink)  
Old 01-29-2008
Nathan Nobbe
 
Posts: n/a
Default Re: [PHP] Handle time-outs and errors with file()

On Jan 29, 2008 10:58 AM, John Papas <jspapas@gmail.com> wrote:

> I'm using file() to get the contents of a remote page in my script but
> I cannot find any information regarding how I could *gracefully*
> handle a broken network connection or even a time-out (slow
> connection).
>
> Is there a way?
>
> ---
> Example:
> $menu = file('http://www.remotesite.org/mypage.html'<http://www.remotesite.org/mypage.html%27>
> );
> foreach ($menu as $line_num => $line) {
> echo $line."\n";
> }



theoretically, you could use a stream context and set a notification
handler, however, i was unable to get notifications when using this code:

function httpStreamNotificationHandler($notification_code, $severity,
$message, $message_code, $bytes_transferred, $bytes_max) {
echo __FUNCTION__ . PHP_EOL;
var_dump(func_get_args());
}
$options = array('http' =>
array('method' => 'GET',
'timeout' => 3
)
);

$streamContext = stream_context_create($options);
if(stream_context_set_params($streamContext, array('notification',
'httpStreamNotificationHandler'))) {
echo 'stream context parameters set, loading remote resource..' .
PHP_EOL;
// load remote resource
$theFile = file('http://www.remotesite.org/mypage.html', null,
$streamContext);
var_dump($theFile);
} else {
echo 'couldnt set context parameters' . PHP_EOL;
}

you might also get something out of the timeout option, which i set in the
code above,
but ive not verified its working correctly either.
also, you might try curl.

-nathan

Reply With Quote
  #3 (permalink)  
Old 01-29-2008
Eric Butera
 
Posts: n/a
Default Re: [PHP] Handle time-outs and errors with file()

On Jan 29, 2008 10:58 AM, John Papas <jspapas@gmail.com> wrote:
> I'm using file() to get the contents of a remote page in my script but
> I cannot find any information regarding how I could *gracefully*
> handle a broken network connection or even a time-out (slow
> connection).
>
> Is there a way?
>
> ---
> Example:
> $menu = file('http://www.remotesite.org/mypage.html');
> foreach ($menu as $line_num => $line) {
> echo $line."\n";
> }
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


I'm not exactly sure what you are trying to accomplish or what sort of
access you have to the server, but if it were me I wouldn't rely on a
remote connection in real time. I would have a cron job that
periodically updated the results that I am expecting so that reads on
your site are very fast. Like I said though I'm not sure what you're
using this for so I cannot say whether or not it is okay for you to
cache this data locally for 5 minutes or even 1 day.

If you can cache it but cannot run cron jobs, then just write the
return buffer to a file and hold that for as long as possible checking
the last time it was wrote to see if it needs a refresh.
Reply With Quote
  #4 (permalink)  
Old 01-31-2008
Richard Lynch
 
Posts: n/a
Default Re: [PHP] Handle time-outs and errors with file()



On Tue, January 29, 2008 9:58 am, John Papas wrote:
> I'm using file() to get the contents of a remote page in my script but
> I cannot find any information regarding how I could *gracefully*
> handle a broken network connection or even a time-out (slow
> connection).
>
> Is there a way?
>
> ---
> Example:
> $menu = file('http://www.remotesite.org/mypage.html');


Use http://php.net/set_error_handler

You can change the timeout with set_ini() right before the file() call.

If $menu === false, then it failed.

> foreach ($menu as $line_num => $line) {
> echo $line."\n";
> }
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>



--
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?
Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 11:27 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0