Re: Handle time-outs and errors with file()

From: Date: Tue, 29 Jan 2008 17:47:24 +0000
Subject: Re: Handle time-outs and errors with file()
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-268260@lists.php.net to get a copy of this message
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

« previous php.general (#268260) next »