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 ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
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"; } |
|
|||
|
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 |
|
|||
|
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. |
|
|||
|
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? |