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 11/11/2006, 13h25   #1
Invité régulier
 
Inscription : janvier 2005
Messages : 41
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 41
Points : 9
Points : 9
Par défaut [Upload] Upload limité sur hebergeur

Bonjour,
j'ai crée une fonction qui me permet de gérer ma galerie photo.
J'ai un dossier nommé 'FULL' qui contient mes images nommées 1.jpg, 2.jpg, ...

Le script crée 3 formats miniatures de ces photos (miniature, aperçu, zoom).
Tout fonctionne bien en local, bien que j'ai du rajouter un set_time_limit(0); afin de ne pas dépasser les 30s du time_limit de php.ini.
En local, donc, tout est ok.

Cependant, lorsque je test cette fonction sur mon hebergeur, tout commence bien, mais le script s'arrête vers la 8eme photo.

Je pense qu'il doit y avoir un config de l'hebergeur qui évite la surcharge de son proc, mais bon...
Pour info, je suis chez 1and1

Quelles solutions pourriez-vous me proposer ?


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
 
function creation($repertoire){
	// CREATION DES MINIATURES	
	$home = $repertoire."/home/";
	$mini = $repertoire."/mini/";
	$big = $repertoire."/big/";
	$full = $repertoire."/full/";
 
	$nb=count_files($full, ".jpg", 0);
 
	// On crée le dossier
	mkdir($home);
	mkdir($mini);
	mkdir($big);
	set_time_limit(0);
	$i=1;
	while($i<=$nb) {
		$big_file = $full.$i.'.jpg';
		$source = imagecreatefromjpeg($big_file); // La photo est la source
 
		$largeur_source = imagesx($source);
		$hauteur_source = imagesy($source);
 
		if(($largeur_source)>($hauteur_source)){
		if ($i<6) $destination = imagecreatetruecolor(250, 187); // On crée la miniature vide
		$destination2 = imagecreatetruecolor(100, 75); // On crée la miniature vide
		$destination3 = imagecreatetruecolor(640, 480); // On crée la miniature vide
		}
		else {
		if ($i<6) $destination = imagecreatetruecolor(187,250); // On crée la miniature vide
		$destination2 = imagecreatetruecolor(75,100); // On crée la miniature vide
		$destination3 = imagecreatetruecolor(480,640); // On crée la miniature vide
		}
 
		// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image		
		if ($i<6) $largeur_destination = imagesx($destination);
		$largeur_destination2 = imagesx($destination2);
		$largeur_destination3 = imagesx($destination3);
		if ($i<6) $hauteur_destination = imagesy($destination);
		$hauteur_destination2 = imagesy($destination2);
		$hauteur_destination3 = imagesy($destination3);
 
		// On crée la miniature
		if ($i<6) imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
		imagecopyresampled($destination2, $source, 0, 0, 0, 0, $largeur_destination2, $hauteur_destination2, $largeur_source, $hauteur_source);
		imagecopyresampled($destination3, $source, 0, 0, 0, 0, $largeur_destination3, $hauteur_destination3, $largeur_source, $hauteur_source);
 
		if ($i<6) $file_home = $home.$i.'.jpg';
		$file_mini = $mini.$i.'.jpg';
		$file_big = $big.$i.'.jpg';
		// On enregistre la miniature"
		if ($i<6) imagejpeg($destination, $file_home);
		imagejpeg($destination2, $file_mini);
		imagejpeg($destination3, $file_big);
		echo '<img src='.$file_mini.' alt="ok" /> ';
		$i++;
	}
}
Merci d'avance pour vos réponses !
djedie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2006, 13h45   #2
Membre habitué
 
Avatar de kazhar
 
Étudiant
Inscription : novembre 2006
Messages : 129
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2006
Messages : 129
Points : 134
Points : 134
Eh bien, si ton hébergeur refuse que tu traite plus de 8 images par chargement, tu n'en traite pas plus
Et une fois que tu en a traité 8, tu recharge la page (un meta refresh sera suffisant) et tu traite les 8 suivantes.
Jusqu'à la fin de ton traitement.
kazhar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2006, 14h33   #3
Invité régulier
 
Inscription : janvier 2005
Messages : 41
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 41
Points : 9
Points : 9
Je ne sais pas s'il refuse ou s'il y a un timeout ou autre chose.

Mais avec le meta refresh, ca va etre galere de reprendre à l'image ou ca c'est arreté.

Au fait, c est pas 8 mais 9...


en plus je ne pense pas que cela vienne de ca, car lrsque je ne créer que les miniatures, j'arrive a en faire 11.
djedie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2006, 14h53   #4
Membre régulier
 
Avatar de elitemedia
 
Inscription : août 2006
Messages : 115
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : août 2006
Messages : 115
Points : 92
Points : 92
Je ne sais pas si ca peut marcher, mais il y a moyen de mettre l'execution du script durant un certain nombre de secondes en pause. Voir les fonctions :

http://fr3.php.net/sleep
http://fr3.php.net/manual/en/function.usleep.php

Voir aussi peut-etre:
http://fr3.php.net/manual/en/functio...time-limit.php
__________________
Votre nom de domaine dès 1,47€ ?
www.avenuedot.com
elitemedia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2006, 21h04   #5
Invité régulier
 
Inscription : janvier 2005
Messages : 41
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 41
Points : 9
Points : 9
Non, malheureusement cela ne marche pas...
djedie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2006, 21h17   #6
Membre régulier
 
Avatar de elitemedia
 
Inscription : août 2006
Messages : 115
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : août 2006
Messages : 115
Points : 92
Points : 92
Tu as bien essayé de faire un traitement par lots de 4 ou 5 images et de mettre le script en pause un certain temps puis de reprendre ?

Traitement de 4 images > Pause de 5 secondes > Reprise du traitement > Pause de 5 secondes > etc...
__________________
Votre nom de domaine dès 1,47€ ?
www.avenuedot.com
elitemedia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2006, 21h50   #7
Invité régulier
 
Inscription : janvier 2005
Messages : 41
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 41
Points : 9
Points : 9
j'essaye en rajoutant ca dans le while : if($i%5==0) sleep(5);

je te dis après


....


Ca ne fonctionne pas, le sleep() est compté dans le timeout de l hebergeur.

Donc après les 4 images crée, ca s'arrête.
djedie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2006, 23h26   #8
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
cela ne répond certainement pas à ta question, mais j'ai un petit commentaire à faire :

les imagecreatecopyresampled etc utilisent beaucoup (vraiment beaucoup) de ressources. Et prennent beaucoup de temps, donc ta page sera très longue à charger (que tu aies mis le time limit à 0 ne change pas le temps de chargement)
Donc je te suggère la méthode suivante (c'est celle que j'utilise) :
contrôler si l'image miniature existe
et la créer uniquement si elle est inexistante
idem bien entendu pour aperçu et zoom
L'avantage est double :
d'une part ton code sera plus rapide (sauf la première fois)
et le temps de chargement pareil
et pour finir : si ton script n'exécute que 7 photos, eh bien les voilà créées, et au prochain passage ton script exécutera sept autres photos (bien sûr ce n'est pas propre, mais cela fonctionne...)
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2006, 02h49   #9
Invité régulier
 
Inscription : janvier 2005
Messages : 41
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 41
Points : 9
Points : 9
Super !

merci pour les conseils !

En fait je test l'existence des fichiers comme tu me l'as expliqué avant et he met un meta refresh de 10s dans le head pour recharger la page.

A la sortie du mon while je fais une redirection Javascript vers une autre page pour me dire que c'est fini !

C'est un peu long, mais ca me convient parfaitement !

Merci
djedie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h10.


 
 
 
 
Partenaires

Hébergement Web