Frage

Ich erhalte den 500 internen Serverfehler, indem ich das folgende Skript ausführe, obwohl ich jeweils die DB 80 -Bilder herunterlade und einfüge:

<?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;
?>

Mache ich etwas falsch, was den Server dazu zwingt, anzuhalten? Oder falls es nicht effizient ist, was kann ich tun, um es so zu machen. Oder vielleicht ist das Problem eine Serverkonfiguration.

Server:

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

Deine Hilfe ist sehr Willkommen.

Update (Protokoll):

‎[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

Updatezeit):

ungefähr 100 Sekunden.

Update (Die):

Ich habe nach dieser Zeile einen Würfel gestellt und der Fehler scheint hier zu sein:

download_remote_file($game_img, realpath($game_img_path) . '/'.$game_img_name);
War es hilfreich?

Lösung

Dies liegt daran, dass die maximale Ausführungszeit des Standard -PHP -Skripts der Fall ist 30 Sekunden Und Ihre Seite dauert mehr als 100 Sekunden.

Sie können die maximale Ausführungszeit für Ihre PHP -Skripte mithtaccess -Datei erhöhen

Fügen Sie Ihren folgenden Zeilen hinzu .htaccess Datei

php_value max_execution_time 8000
php_value max_input_time 4000

Sie können auch die Grenze festlegen Php.ini Datei

max_execution_time 8000
max_input_time 4000
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top