2009-04-04 6 views
0

Je travaille sur un script de téléchargement d'image et j'ai rencontré ce problème. En utilisant ImageMagick je courrais sur le redimensionnement du temps et le téléchargement des images donc j'inséré ces deux lignes:Le script PHP ne se termine pas lorsqu'il est terminé

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

Maintenant, cependant, le script ne se termine jamais. Il exécute continuellement la page même s'il télécharge, redimensionne et insère correctement dans la base de données. Est-ce que ces éléments entrent en conflit les uns avec les autres? Il dépasse même les 120 secondes que j'ai définies comme limite de temps.

Éditer: Ceci est la partie de l'édition d'image complète du script, il fonctionne avec dis 1 ou 2 images, mais quand je mets plus (ce qui en fait prendre plus de temps), il ne fonctionne pas.

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

Voici le code que j'utilise pour lire toutes les images qui doivent être téléchargés: (reSizePic est la fonction qui appelle le code ci-dessus)

$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

pouvez-vous montrer le code php que vous utilisez dans votre script? – Aziz

+0

J'ai ajouté dans le reste de la fonction d'image. – Levi

+0

try set_time_limit (0); ? – Aziz

Répondre

2

Vous devez vous assurer de n'appeler qu'une seule fois set_time_limit(), car chaque fois que vous l'appelez, la minuterie sera réinitialisée. Par exemple, si vous appelez set_time_limit (30) 10 secondes dans votre script, votre script s'exécutera pendant 40 secondes au total. Le paramétrer sur chaque appel de resizePic() est donc une mauvaise idée.

+0

Si je les retire de la boucle, je reçois une erreur de serveur interne après avoir téléchargé comme 10 images sur 15. – Levi

+0

Essayez de le mettre au début du script, et réglez le délai à 0 (infini) – Aziz

+0

N'a pas travail, mais ce que j'ai remarqué que je n'avais pas auparavant, c'est que seulement certaines des images étaient redimensionnées. Ils sont téléchargés puis redimensionnés, j'ai donc besoin de comprendre comment redimensionner puis les télécharger. Je pense que le serveur a une limite de temps que je ne peux pas remplacer. – Levi