On Jan 29, 2008 10:58 AM, John Papas <[EMAIL PROTECTED]> 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 via email to