Question

Je reçois le 500 Internal Server Error en exécutant le script suivant, même si je télécharge et l'insertion des DB 80 images à la fois:

<?php

function download_remote_file($file_url, $save_to)
{
    $content = file_get_contents($file_url);
    file_put_contents($save_to, $content);
}

function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

require_once('sqlconnect.php');
$time_start = microtime_float();
$query="SELECT * FROM GAMES WHERE GAME_IMAGE LIKE '%cache%' LIMIT 0, 80";

$result = mysql_query($query);

while($row = mysql_fetch_array($result))
{
  $game_img = $row['GAME_IMAGE'];
  $gameDB_id = $row['GAME_DBID'];
  chdir($_SERVER['DOCUMENT_ROOT'].'/img/game/');
  if(!file_exists($gameDB_id))
  {
  mkdir($gameDB_id);
  }
  if(strlen(strstr($game_img,'boxart')) == 0)
  {
      $game_img = $game_img.'/boxart/original/front/'.$gameDB_id.'-1.jpg'; 
  }

  $game_img_path = $_SERVER['DOCUMENT_ROOT'].'/img/game/'.$gameDB_id;
  chmod($game_img_path,0777);
  $game_img_name = $gameDB_id.'.jpg';
 $gamefullpath = 'http://www.someSite.nl/img/game/'.$gameDB_id.'/'.$game_img_name;
 if(!file_exists($game_img_path.'/'.$game_img_name ))
 {
  download_remote_file($game_img, realpath($game_img_path) . '/'.$game_img_name); 

  $bytes = filesize($game_img_path.'/'.$game_img_name );
  $KB = round($bytes / 1024, 2);
  if($KB > 50)
  {
      echo "The ID number ".$gameDB_id. " has an invalid image URL, look it up on gamedb.net! <br />";
  }
 }
   $query2 = "UPDATE GAMES SET GAME_IMAGE = '$gamefullpath' WHERE GAME_DBID = '$gameDB_id' AND GAME_DBID";
  $result2 = mysql_query($query2) or die("error!");
  //$nr_of_files = count($game_img_path);
  //echo "Nr of images downloaded:".$nr_of_files;
}

mysql_close($con);
$time_end = microtime_float();
$time = $time_end - $time_start;

echo "Downloading and adding to the database took ".$time." seconds <br />";
$message = "The specified images have been downloaded!";
echo $message;
?>

Ai-je fait quelque chose de mal qui oblige le serveur à arrêter? Ou dans le cas où il n'est pas efficace ce que je peux faire pour qu'il en soit ainsi. Ou peut-être le problème est une configuration du serveur.

Serveur:

Apache/2.2.9 (Debian) DAV/2 SVN/1.5.1 PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_ruby/1.2.6 Ruby/1.8.7(2008-08-11) mod_ssl/2.2.9 OpenSSL/0.9.8g Server

Votre aide est très appréciée.

Mise à jour (journal):

‎[Wed Jan 11 08:58:39 2012] [notice] mod_fcgid: call /home/someSiteName/public_html/admin/download_game_img.php with wrapper /home/someSiteName/fcgi-bin/php5.fcgi

UPDATE (heure):

à environ 100 secondes.

UPDATE (die):

Je mis une filière après cette ligne et l'erreur semble être ici:

download_remote_file($game_img, realpath($game_img_path) . '/'.$game_img_name);
Était-ce utile?

La solution

est parce que le temps d'exécution maximum de script php par défaut est 30 secondes et votre page prend plus de 100 secondes.

vous pouvez augmenter la durée d'exécution maximale pour vos scripts PHP en utilisant le fichier .htaccess

ajouter les lignes suivantes à votre .htaccess fichier

php_value max_execution_time 8000
php_value max_input_time 4000

vous pouvez également définir la limite dans le fichier php.ini

max_execution_time 8000
max_input_time 4000
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top