2009-04-04 16 views
0

Ich arbeite an einem Bild Upload-Skript und lief auf dieses Problem. Mit ImageMagick würde ich aus der Zeit Ändern der Größe und Hochladen von Bildern laufen, so dass ich diese beiden Zeilen eingefügt:PHP-Skript wird nicht beendet, wenn abgeschlossen

set_time_limit(120); 
ini_set('max_input_time', 120); 

Nun aber endet das Skript nie. Die Seite wird kontinuierlich ausgeführt, obwohl sie hochgeladen, in der Größe angepasst und in die Datenbank eingefügt wird. Widersprechen sich diese in irgendeiner Weise? Es geht sogar über die 120 Sekunden hinaus, die ich als Zeitlimit gesetzt habe.

Edit: Dies ist die vollständige Bildbearbeitung Teil des Skripts, es funktioniert mit sagen, 1 oder 2 Bilder, aber wenn ich mehr (mehr damit machen es länger dauern), tut es nicht.

set_time_limit(120); 
ini_set('max_input_time', 120); 
$resource = NewMagickWand(); 
MagickReadImage($resource,$image); 
MagickSetImageCompressionQuality($resource, 100); 
$resource = MagickTransformImage($resource,'0x0','660x500'); 
MagickWriteImage($resource, $image); 
DestroyMagickWand($resource); 

Dies ist der Code, den ich alle Bilder, um zu lesen, die hochgeladen werden sollen: (reSizePic die Funktion ist, dass der Code oben nennt)

$numberImages = count($_FILES['galFile']['name'])-1; 

    for($i=1;$i<=$numberImages;$i++) 
    { 
    $imageName = $_FILES['galFile']['name'][$i]; 
       $imageType = $_FILES['galFile']['type'][$i]; 
       $imageSize = $_FILES['galFile']['size'][$i]; 
       $imageTemp = $_FILES['galFile']['tmp_name'][$i]; 
       $imageError = $_FILES['galFile']['error'][$i]; 

       //Make sure it is an image 
       if(in_array(end(explode(".", $imageName)), $allowed)) 
       { 
        //Where to upload image to 
        $uploadFile = $uploadDir . $imageName; 
        if (file_exists($uploadFile)) 
      { 
       //What to do if file already exists 
       //Append random number to the end 
       $front = explode(".", $imageName); 
       $randomNum = rand(1,100); 
       $front[0] = $front[0].$randomNum; 
       $imageName = $front[0].".".$front[1]; 
       $uploadFile = $uploadDir . $imageName; 
      } 
         if(move_uploaded_file($imageTemp,$uploadFile)) 
         { 
         //Add $imageName to DB 
         $query = "INSERT INTO galleryImages VALUES(\"0\",\"$lastInsert\",\"$imageName\",\"$i\")"; 
        mysql_query($query); 
        reSizePic($uploadFile); 
         } 
       } 



Levi

+0

Können Sie den PHP-Code anzeigen, den Sie in Ihrem Skript verwenden? – Aziz

+0

Ich habe den Rest der Bildfunktion hinzugefügt. – Levi

+0

versuchen set_time_limit (0); ? – Aziz

Antwort

2

Sie sollten sicherstellen, dass set_time_limit() nur einmal aufgerufen wird, da bei jedem Aufruf der Timer zurückgesetzt wird.

Zum Beispiel, wenn Sie set_time_limit (30) 10 Sekunden in Ihr Skript aufrufen, wird Ihr Skript für insgesamt 40 Sekunden ausgeführt. Es ist also eine schlechte Idee, es auf jeden resizePic() Aufruf zu setzen.

+0

Wenn ich sie aus der Schleife nehme, erhalte ich einen internen Serverfehler, nachdem es wie 10 Bilder von 15 hochlädt. – Levi

+0

versuchen Sie es am Anfang des Skripts zu setzen, und setzen Sie das Timeout auf 0 (unendlich) – Aziz

+0

Hat nicht Arbeit, aber was ich bemerkte, dass ich nicht vorher war, dass nur einige der Bilder in der Größe geändert wurden. Sie werden hochgeladen und dann in der Größe angepasst, sodass ich herausfinden muss, wie man die Größe ändert und sie dann hochlädt. Ich denke, der Server hat ein Zeitlimit, das ich nicht überschreiben kann. – Levi

Verwandte Themen