Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/06/2007, 15h34   #1
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 1
Points : 1
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.
migli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 20h44   #2
Membre régulier
 
Inscription : septembre 2003
Messages : 193
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 193
Points : 84
Points : 84
je sais pas si ca vient de ton code ou pas, moi perso j'utilise ca :

Code :
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 ....
Tyler Durden est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 21h47   #3
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 1
Points : 1
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??
migli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 23h26   #4
Membre éclairé
 
Homme
En formation
Inscription : mai 2007
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : En formation

Informations forums :
Inscription : mai 2007
Messages : 128
Points : 348
Points : 348
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
nu_tango est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2007, 18h49   #5
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 1
Points : 1
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
migli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2007, 23h09   #6
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
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.
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2007, 07h26   #7
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 1
Points : 1
Mon hébergeur est nuxit. Excellent service, rien à dire de ce côté.

Apparemment, ce qui pose prblème est plus du côté de l'upload, selon la vitesse de connection des utilisateurs.

Le script de redimensionnement est fonctionnel, réduit au minimum ncéssaire.

J'attends pour l'instant le résultat du test sur plusieurs pages : chez moi ça fonctionne je suis donc obligé de demander à quelqu'un chz qui ça ne fonctionne pas de tester pour moi
migli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h54.


 
 
 
 
Partenaires

Hébergement Web