Hi Marshall,
the function file_get_contents may have problem with large files.
You could try get the file using "fread" and feof.
Here i put a example
$contents = '';
while(!feof($stream)){
$contents .= fread($stream, 8192);
}
Gerardo Benitez.
On Thu, Oct 22, 2009 at 12:38 PM, Marshall Burns <[email protected]>wrote:
> I have a script that downloads a sequence of files online. Every hundred
> files or so, it fails with:
>
>
>
> ==========================
>
> Warning: file_get_contents(<URL>) []: failed to open stream: A connection
> attempt failed because the connected party did not properly respond after a
> period of time, or established connection failed because connected host has
> failed to respond. in <script>.php on line <number>
>
> Fatal error: Maximum execution time of 30 seconds exceeded in <script>.php
> on line <number>
>
> ==========================
>
>
>
> I have tried to trap this so that I could loop back and let the script try
> the access again. Failing that, I've also tried to get a shutdown function
> to give me a restart link. The code for this is:
>
>
>
> ==========================
>
> $bWorking = true;
>
>
>
> .
>
> $bDone = false;
>
> while(! $bDone)
>
> {$sFil = file_get_contents($sURL);
>
> if($sFil)
>
> {$sFileSize = file_put_contents('image/' . $sID .
> '.jpg', $sFil);
>
> $bDone = true;}
>
> else
>
> {echo('<br>DL error on ' . $sURL);
>
> $sFileSize = 'DL error';
>
> set_time_limit(30);}
>
> echo(', got ' . $sFileSize);
>
> }
>
> .
>
>
>
> $bWorking = false;
>
>
>
> register_shutdown_function('ReadFileTimeout');
>
> function ReadFileTimeout()
>
> // Provide a link to restart processing after a timeout in
> file_get_contents().
>
> {global $bWorking, $sParameters;
>
> if($bWorking)
>
> echo('<p><a HRef="<script>.php?parameters=' .
> $sParameters . '" target="_blank">Restart</a>');
>
> }
>
> ==========================
>
>
>
> None of that is working. I guess the loop doesn't work because the warning
> is emitted after the script has already been aborted by the timeout. But in
> that case, the shutdown function should kick in, but the link is not being
> output.
>
>
>
> So two questions:
>
> (a) Is there a way to get file_get_contents() to stop trying
> before the script time limit is reached, so that my loop could work?
>
> (b) Why is the shutdown function not working?
>
>
>
> Thanks for your help.
>
>
>
> Marshall
>
>
>
>
>
>
>
>
>
>
>
>
--
Gerardo Benitez