IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Upload] création de vignettes et set_time_limit();


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Par défaut [Upload] création de vignettes et set_time_limit();
    Bonjour à tous,

    J'utilise un script qui permet d'uploader une image, la redimensionne avant de l'enregistrer sur le serveur, puis génère une vignette.

    2 problèmes se posent : la mémoire allouée et le temps d'execution.
    j'augmente donc la capacité de mémoire et le temps d'execution, mais ça ne fonctionne pas chez certains hébergeurs.

    Je précise que j'ai besoin que ce script fonctionne chez un hébergeur mutualisé standart.

    Quelqu'un aurait-il une idée d'un procédé qui permettrait de contourner le problème?

    Voyez-vous un moyen d'executer un tel script en séparant chacune des opérations?

    Merci de vos réponses.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Par défaut
    je sais pas si ca vient de ton code ou pas, moi perso j'utilise ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    	$imgsource = $row2[0];
     
    							$image_dir = '';
    							// Définition du nom de la miniature
    							$miniature = $image_dir."mini_".$imgsource;
    							// Définition de la largeur et de la hauteur maximale
    							$width = 200;
    							$height = 200;
     
    							// si l'image qu'on lit est déjà une miniature
    							// on applique pas la fonction
    							if (strstr($imgsource,"mini_")){
    							        return false;
    							}
     
    							// si la miniature n'est pas déjà créée
    							// (sinon on la réutilise)
    							if (!file_exists($miniature)){
     
    							        // Cacul des nouvelles dimensions proportionnelles
    							        list($width_src, $height_src) = 
    							               getimagesize($image_dir.$imgsource);
     
    							        if ($width && ($width_src < $height_src)) {
    							           $width = ($height / $height_src) * $width_src;
    							        } else {
    							           $height = ($width / $width_src) * $height_src;
    							        }
     
    							        // créé une image vide
    							        $im = ImageCreateTrueColor ($width, $height) 
    							                     or die ("Erreur pour créer l'image");
     
    							        // lit l'image source
    							        $source = ImageCreateFromJpeg($image_dir.$imgsource);
     
    							        // on créé un cadre autour de la miniature
    							        $blanc = ImageColorAllocate ($im, 255, 255, 255);
    							        $gris[0] = ImageColorAllocate ($im, 69, 69, 69);
    							        $gris[1] = ImageColorAllocate ($im, 82, 82, 82);
    							        $gris[2] = ImageColorAllocate ($im, 97, 97, 97);
    							        $gris[3] = ImageColorAllocate ($im, 107, 107, 107);
    							        $gris[4] = ImageColorAllocate ($im, 120, 120, 120);
    							        $gris[5] = ImageColorAllocate ($im, 134, 134, 134);
    							        $gris[6] = ImageColorAllocate ($im, 145, 145, 145);
     
    							        for ($i=0; $i<7; $i++) {
    							               ImageFilledRectangle($im, $i, $i, $width-$i, 
    							               $height-$i, $gris[$i]);
    							        }
     
    							        // créé la miniature : attention fonction lourde
    							        ImageCopyResampled($im, $source, 8, 8, 0, 0, 
    							        $width-(2*8), $height-(2*8), $width_src, $height_src);
     
    							        // ajoute une chaine d'info sur l'image (le  numéro de dossier associé à l'image !)
    									$requete_nro_dossier = "SELECT nro_Dossier FROM PHOTO WHERE chemin_Photo = '$imgsource'";
     
    									$res3 = mysql_query($requete_nro_dossier);
    									while($row3 = mysql_fetch_row($res3)){
    											$noDossier = $row3[0];
    									}
     
    							        ImageString($im, 0, 12, $height-18, 
    							        "$noDossier ", $blanc);
     
    							        // sauvegarde du résultat
    							        ImageJpeg($im, $miniature);
    si t'arrive a comprendre .... ca marche en local sur un réseau pourri mais ca marche très bien ....

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Par défaut
    oui, c'est ce genre de script (je passe les détails, je pense que ça n'est pas la peine que je balance un script de 200 lignes).

    En fait, j'ai deux images génerées : la 1ère au format web (environ 600 par 400), et la seconde est une vignette.

    Le fait de génerer ces 2 images dépasse les 30" autorisées chez certains.

    Après réflexion, je pense avoir trouvé une piste : génerer la 1ère image, puis faire un header vers une 2ème page qui génère l'image suivante.

    Un peu bizarre comme solution, mais je ne vois pas autre chose.

    1 autre idée, quelqu'un??

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    Tu peux définir un temps d'exécution maximal directement au début de ton script avec cette fonction set_time_limit() avec une valeur en secondes si tu n'as pas accès au php.ini

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Par défaut
    Justement, c'est ce que j'utilise, mais mon hébergeur bloque le timelimit à 30".

    J'essaie atuellement de répartir le script sur plusieurs pages (une page pour chaque manipulation d'image), chacune appelle la suivante par un javascript

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Je sais pas chez qui tu es mais plus de 30 secs puor générer deux vignettes, ca me parait bien long...
    Je te conseillerai de coder toi meme ce script de redimensionnement. J'en ai que j'ai fait moi meme et qui me satisfait pleinement (je l'ai pas sous la main mais je peux te l'envoyer si besoin).
    Et sur un mutu ou je l'utilise la page se charge comme si je ne faisais meme pas de redimensionnement donc ca me parait un peu suspect ce trente secondes de script dépassé. Soit ton hébergeur est vraiment a la peine, soit l'algo est trop lourd ou buggé a mon avis.
    Je sais que ca ne répond pas a ton probleme mais je pense que c'etait utile de le dire.

Discussions similaires

  1. création de vignette
    Par HAbroc dans le forum Langage
    Réponses: 3
    Dernier message: 25/11/2009, 18h12
  2. [MySQL] Création de vignette avec incrémentation
    Par allellla dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 05/03/2009, 22h13
  3. [WD10]Création de vignettes ?
    Par Louis Griffont dans le forum WinDev
    Réponses: 6
    Dernier message: 15/02/2007, 10h29
  4. [ImageMagick] Création de vignette d'image à la volée
    Par falatop dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 31/10/2006, 15h13
  5. [ImageMagick] Création de vignettes (images réduites)
    Par tom06440 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 22/10/2005, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo