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

 

 

 

 

 

Reply via email to