$ctx = stream_context_create(['http'=>['timeout'=>3]]); // таймаут в секундах
$maxAttempts = 2; // макс кол-во попыток
$attempt = 0; // тут будет храниться кол-во совершенных попыток
while(!($content=file_get_contents('http://lll', false, $ctx)) && ++$attempt<$maxAttempts); // тут магия
echo $content; // полученный контент
или как написали выше curl, мануалов по нему море в гугле