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 30/10/2007, 00h33   #1
Membre du Club
 
Inscription : novembre 2006
Messages : 61
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2006
Messages : 61
Points : 42
Points : 42
Envoyer un message via MSN à gandalf76fr Envoyer un message via Skype™ à gandalf76fr
Par défaut [FTP] Traitement par lot

Bonjour,

dans le cadre d'un projet perso, je pense que je serais confronté à un légers problème de temps de traitement et je n'ai hélas pas d'idée pour le résoudre.

Tout d'abord le contexte : J'ai créé un album photo web de ma fille, à destination de ma famille (géré par php web gallerie).

Le probleme : Pour facilliter l'organisation, il à été décidé que les photos seraient organisées par années / mois / jours : http://www.aurianne-pastre.fr/
Mais devant la prolifération des photos, le temps pris par mon boulot, j'ai de moins en moins de temps pour faire cette organisation. Surtout que j'attend une 2eme fille pour dans 5 mois.

J'ai donc eut l'idée de faire un bout de code qui lit les infos EXIFS des photos que j'airais préalablement uploadées par FTP, et les déplace dans les repertoires qui conviennent (et crée ceux qui n'existe éventuelement pas encore) automatiquement à partir des dates de prises de vues. De plus il créera éventuelement les miniatures adéquates.

Le gros problème : J'upload souvent les photos par grande quantitées car je ne m'astreint pas à le faire tout les jours. Hélas ou heureusement (sécurité oblige) je pense que les traitements seront trop long suite au max execution time... Certe j'ai le controle sur ces parametres mais je ne trouve pas sécurisant pour le serveur de les augmenter de façon trop élevée.

Je cherche donc un moyen des les traiter par lots, mais je n'ai aucune idée de comment y parvenir.

Voici un bout de mon code (miniatures pas encore codées), en esperant que vous aurez quelques idées à me soumetre :
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
<?php
$rep = "galeries/";
$rep_dest = "galeries2/";
$entree = opendir($rep);
while (($file = readdir($entree)) !== false)
{
	if (is_file($rep.$file) && $file !="." && $file !="..")
	{
	$img=$rep.$file;
	if(in_array(strtolower(end(explode('.', $img))), array('jpg', 'jpeg', 'tif', 'tiff'))) // Si fichier Jpeg ou Tiff
		{
			if($exif = exif_read_data($img, 'EXIF' , true)) // Si le fichier $img contient des infos Exif
			{
			foreach ($exif as $key => $section) // On parcourt la première partie du tableau multidimensionnel
			{      
			    foreach ($section as $name => $value) // On parcourt la seconde partie
			    {
			        $exif_tab[$name] .= $value; // Récupération des valeurs dans le tableau $exif_tab
			    }
			}
			}
			if($exif_tab['DateTimeOriginal'])
			{
		    $date = $exif_tab['DateTimeOriginal']; // Date de la prise de vue (heure de l'appareil)
			// La date est d'un format spécial, on va donc la rendre lisible
			$date = substr_replace($date, '-',4,1);
			$date = substr_replace($date, '-',7,1);
			$tab_month = array(1=>"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre");
			$tab_day = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
			$tab_date = explode(' ', $date);
			$date_hour = explode(':', $tab_date[1]);
			$tab_dmy = explode('-', $tab_date[0]);
			$day = date("w", mktime(0, 0, 0, $tab_dmy[1], $tab_dmy[2], $tab_dmy[0]));
			settype($tab_dmy[1], integer);
			$jour_nom=$tab_day[$day];
			$jour_num=$tab_dmy[2];
			$mois=$tab_month[$tab_dmy[1]];
			$annee=$tab_dmy[0];
			$date=$jour_nom.'_'.$jour_num.'_'.$mois.'_'.$annee.'_'.$date_hour[0].'h'.$date_hour[1];
			echo $file.' '.$date.'<br />';
			$dest=$rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/';
			if(!is_dir($rep_dest.$annee.'/'))
			{
			mkdir($rep_dest.$annee.'/', 0755);
			}
			if(!is_dir($rep_dest.$annee.'/'.$mois.'/'))
			{
			mkdir($rep_dest.$annee.'/'.$mois.'/', 0755);
			}
			if(!is_dir($rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/'))
			{
			mkdir($rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/', 0755);
			}			
			copy($img,$dest.$file.'_'.$date.'.jpg');
			unset($exif_tab);
			}
		}
	}
}
?>
Merci d'avance de votre aide.
Cordialement.
gandalf76fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 09h29   #2
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Une méthode un peu bidouille mais qui fonctionne consiste à intégrer un compteur dans ta boucle de lecture du répertoire, puis lorsque tu as effectué un certain nombre de traitements réappeler la page :

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
 
<?php
$rep = "galeries/";
$rep_dest = "galeries2/";
$entree = opendir($rep);
$compteur_lot = 0;
while (($file = readdir($entree)) !== false && $compteur_lot < 100)
{
	if (is_file($rep.$file) && $file !="." && $file !="..")
	{
	$img=$rep.$file;
	if(in_array(strtolower(end(explode('.', $img))), array('jpg', 'jpeg', 'tif', 'tiff'))) // Si fichier Jpeg ou Tiff
		{
			if($exif = exif_read_data($img, 'EXIF' , true)) // Si le fichier $img contient des infos Exif
			{
			foreach ($exif as $key => $section) // On parcourt la première partie du tableau multidimensionnel
			{      
			    foreach ($section as $name => $value) // On parcourt la seconde partie
			    {
			        $exif_tab[$name] .= $value; // Récupération des valeurs dans le tableau $exif_tab
			    }
			}
			}
			if($exif_tab['DateTimeOriginal'])
			{
		    $date = $exif_tab['DateTimeOriginal']; // Date de la prise de vue (heure de l'appareil)
			// La date est d'un format spécial, on va donc la rendre lisible
			$date = substr_replace($date, '-',4,1);
			$date = substr_replace($date, '-',7,1);
			$tab_month = array(1=>"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre");
			$tab_day = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
			$tab_date = explode(' ', $date);
			$date_hour = explode(':', $tab_date[1]);
			$tab_dmy = explode('-', $tab_date[0]);
			$day = date("w", mktime(0, 0, 0, $tab_dmy[1], $tab_dmy[2], $tab_dmy[0]));
			settype($tab_dmy[1], integer);
			$jour_nom=$tab_day[$day];
			$jour_num=$tab_dmy[2];
			$mois=$tab_month[$tab_dmy[1]];
			$annee=$tab_dmy[0];
			$date=$jour_nom.'_'.$jour_num.'_'.$mois.'_'.$annee.'_'.$date_hour[0].'h'.$date_hour[1];
			echo $file.' '.$date.'<br />';
			$dest=$rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/';
			if(!is_dir($rep_dest.$annee.'/'))
			{
			mkdir($rep_dest.$annee.'/', 0755);
			}
			if(!is_dir($rep_dest.$annee.'/'.$mois.'/'))
			{
			mkdir($rep_dest.$annee.'/'.$mois.'/', 0755);
			}
			if(!is_dir($rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/'))
			{
			mkdir($rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/', 0755);
			}			
			copy($img,$dest.$file.'_'.$date.'.jpg');
			unset($exif_tab);
			}
		}
	}
        $compteur_lot++;
}
echo "<script language='javascript'>document.location.href='".$_SERVER['PHP_SELF']."';</script>";
?>
__________________
Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 10h32   #3
Membre du Club
 
Inscription : novembre 2006
Messages : 61
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2006
Messages : 61
Points : 42
Points : 42
Envoyer un message via MSN à gandalf76fr Envoyer un message via Skype™ à gandalf76fr
pas bète, je n'avais pas pensé à cela, surtout que vu que les fichiers sont déplacé il peut reprendre à 0 la liste de fichier étant nouvelle (les 100 premiers déplacés, il prend les 100 suivants.

Je vais tacher de metre ça en place et de faire des test le perf, le but étant de ne pas coucher le serveur durant ces opérations.
gandalf76fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 22h44   #4
Membre du Club
 
Inscription : novembre 2006
Messages : 61
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2006
Messages : 61
Points : 42
Points : 42
Envoyer un message via MSN à gandalf76fr Envoyer un message via Skype™ à gandalf76fr
Bon petit probleme : ça tourne en boucle à l'infini.

Normal je pense car on sors du while si plus de fichiers ou si compteur lot >5
Et on redirige auto vers la par de traitement dans un cas comme dans l'autre, il me faut donc faire un test de condition avant la redirection, je vais tacher d'étudier le probleme.

De plus, je me demande si je ne devrait pas metre un sleep dans ma boucle de traitement, histoire de ne pas trop charger le serveur à chaque lot.

qu'en pensez vous ?
gandalf76fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 01h23   #5
Membre du Club
 
Inscription : novembre 2006
Messages : 61
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2006
Messages : 61
Points : 42
Points : 42
Envoyer un message via MSN à gandalf76fr Envoyer un message via Skype™ à gandalf76fr
Bon la bonne nouvelle c'est que ça marche :
Traitement de lot de 5 images avec copies et création de miniatures (toujours nommées en fonction de la date de prise de vue obtenue à partir des infos EXIF).
Mais, car il y a bien sur un mais : comme je le craignais, durant le traitement de 80 images en 640*480 (sachant que la résolution en prod sera de 800*600 ou 1024/768 et que je traiterais des lots de 300 à 500 photos), je sature le CPU (P4 3ghz) du serveur à plus de 80%.
Ce qui n'est hélas pas viable pour les autre sites que j'héberge dessus.

A votre avis un petit sleep dans la boucle aiderait il à faire baisser ce taux d'occupation CPU ?
Ou avez vous une autre idée pour limiter la consomation de ressources ?

Pour info voila mon code :
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
//error_reporting(E_ALL);
function get_extension($fichier)
{
  $extArray = explode(".", $fichier);
  $extension = $extArray[count($extArray) - 1]; 
  return strtolower($extension);
}
function miniature($dest,$img_finale,$rep_tn_finale,$tn_finale)
{
if (isset($dest) && !empty($dest) && isset($img_finale) && !empty($img_finale) && isset($rep_tn_finale) && !empty($rep_tn_finale) && isset($tn_finale) && !empty($tn_finale))
{
$thumb_largeur_max = 128;
$thumb_hauteur_max = 128;
$srcImage = imagecreatefromjpeg($dest.$img_finale);
			$srcWidth    = imagesx( $srcImage ); 
			$srcHeight   = imagesy( $srcImage ); 
			$ratioWidth  = $srcWidth/$thumb_largeur_max;
			$ratioHeight = $srcHeight/$thumb_hauteur_max;
			if ( ( $ratioWidth > 1 ) or ( $ratioHeight > 1 ) )
			    {
			      if ( $ratioWidth < $ratioHeight)
			      { 
			        $destWidth = $srcWidth/$ratioHeight;
			        $destHeight = $thumb_hauteur_max; 
			      }
			      else
			      { 
			        $destWidth = $thumb_largeur_max; 
			        $destHeight = $srcHeight/$ratioWidth;
			      }
			    }
			else
			{
			 $destWidth = $srcWidth;
			 $destHeight = $srcHeight;
			}
			$destImage = imagecreatetruecolor( $destWidth, $destHeight);
			imagecopyresampled( $destImage, $srcImage, 0, 0, 0, 0,$destWidth,$destHeight,$srcWidth,$srcHeight );
			if(!is_dir($rep_tn_finale))
			{
			mkdir($rep_tn_finale, 0755);
			}
			imagejpeg($destImage, $tn_finale);
}
}
$rep = "galeries/";
$rep_dest = "galeries2/";
$entree = opendir($rep);
$compteur_lot = 0;
while (($file = readdir($entree)) !== false && $compteur_lot <= 5)
{
	if (is_file($rep.$file) && $file !="." && $file !=".." && get_extension($file) == 'jpg')
	{
	$img=$rep.$file;
	if(in_array(strtolower(end(explode('.', $img))), array('jpg', 'jpeg', 'tif', 'tiff'))) // Si fichier Jpeg ou Tiff
		{
			if($exif = exif_read_data($img, 'EXIF' , true)) // Si le fichier $img contient des infos Exif
			{
			foreach ($exif as $key => $section) // On parcourt la première partie du tableau multidimensionnel
			{      
			    foreach ($section as $name => $value) // On parcourt la seconde partie
			    {
			        $exif_tab[$name] .= $value; // Récupération des valeurs dans le tableau $exif_tab
			    }
			}
			}
			if($exif_tab['DateTimeOriginal'])
			{
		    $date = $exif_tab['DateTimeOriginal']; // Date de la prise de vue (heure de l'appareil)
			// La date est d'un format spécial, on va donc la rendre lisible
			$date = substr_replace($date, '-',4,1);
			$date = substr_replace($date, '-',7,1);
			$tab_month = array(1=>"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre");
			$tab_day = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
			$tab_date = explode(' ', $date);
			$date_hour = explode(':', $tab_date[1]);
			$tab_dmy = explode('-', $tab_date[0]);
			$day = date("w", mktime(0, 0, 0, $tab_dmy[1], $tab_dmy[2], $tab_dmy[0]));
			settype($tab_dmy[1], integer);
			$jour_nom=$tab_day[$day];
			$jour_num=$tab_dmy[2];
			$mois=$tab_month[$tab_dmy[1]];
			$annee=$tab_dmy[0];
			$date=$jour_nom.'_'.$jour_num.'_'.$mois.'_'.$annee.'_'.$date_hour[0].'h'.$date_hour[1];
			echo $file.' '.$date.'<br />';
			$dest=$rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/';
			if(!is_dir($rep_dest.$annee.'/'))
			{
			mkdir($rep_dest.$annee.'/', 0755);
			}
			if(!is_dir($rep_dest.$annee.'/'.$mois.'/'))
			{
			mkdir($rep_dest.$annee.'/'.$mois.'/', 0755);
			}
			if(!is_dir($rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/'))
			{
			mkdir($rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/', 0755);
			}
			$img_finale=$file.'_'.$date.'.jpg';
			$rep_tn_finale=$dest.'/thumbnail/';
			$tn_finale=$rep_tn_finale.'TN_'.$file.'_'.$date.'.jpg';
			rename($img,$dest.$img_finale);
			miniature($dest,$img_finale,$rep_tn_finale,$tn_finale);
			unset($exif_tab);
			}
		}
	}
	$compteur_lot++;
}
if ($compteur_lot > 5)
{
echo "<script language='javascript'>document.location.href='".$_SERVER['PHP_SELF']."';</script>";
}
echo "finit";
?>
Merci d'avance de votre aide.
gandalf76fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 23h04   #6
Membre du Club
 
Inscription : novembre 2006
Messages : 61
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2006
Messages : 61
Points : 42
Points : 42
Envoyer un message via MSN à gandalf76fr Envoyer un message via Skype™ à gandalf76fr
Bon après pas mal de déboires non dut au script (le soft que j'utilisais pour automatiser la réduction des photos envoie envoie par ftp avait tendance à perdre certaines infos exif), cette version du script marche :

Compter 16 mins pour le traitement de 2000 photos à 60% d'utilisation CPU

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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<?php
//error_reporting(E_ALL);
function get_extension($fichier)
{
  $extArray = explode(".", $fichier);
  $extension = $extArray[count($extArray) - 1]; 
  return strtolower($extension);
}
function get_date($img)
{
if(in_array(strtolower(end(explode('.', $img))), array('jpg', 'jpeg', 'tif', 'tiff'))) // Si fichier Jpeg ou Tiff
		{
			if($exif = exif_read_data($img, 'EXIF' , true)) // Si le fichier $img contient des infos Exif
			{
			foreach ($exif as $key => $section) // On parcourt la première partie du tableau multidimensionnel
			{      
			    foreach ($section as $name => $value) // On parcourt la seconde partie
			    {
			        $exif_tab[$name] .= $value; // Récupération des valeurs dans le tableau $exif_tab
			    }
			}
			}
			if($exif_tab['DateTimeOriginal'])
			{
		    $date = $exif_tab['DateTimeOriginal']; // Date de la prise de vue (heure de l'appareil)
			// La date est d'un format spécial, on va donc la rendre lisible
			$date = substr_replace($date, '-',4,1);
			$date = substr_replace($date, '-',7,1);
			$tab_month = array(1=>"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre");
			$tab_day = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
			$tab_date = explode(' ', $date);
			$tab_dmy = explode('-', $tab_date[0]);
			$day = date("w", mktime(0, 0, 0, $tab_dmy[1], $tab_dmy[2], $tab_dmy[0]));
			settype($tab_dmy[1], integer);
			$jour_nom=$tab_day[$day];
			$jour_num=$tab_dmy[2];
			$mois=$tab_month[$tab_dmy[1]];
			$annee=$tab_dmy[0];
			$date=$jour_nom.'_'.$jour_num.'_'.$mois.'_'.$annee.'_';
			$result = array("date"=>$date, "annee"=>$annee, "mois"=>$mois, "jour_num"=>$jour_num, "jour_nom"=>$jour_nom);
			return $result;
			}
		}
}
function miniature($dest,$img_finale,$rep_tn_finale,$tn_finale)
{
if (isset($dest) && !empty($dest) && isset($img_finale) && !empty($img_finale) && isset($rep_tn_finale) && !empty($rep_tn_finale) && isset($tn_finale) && !empty($tn_finale))
{
$thumb_largeur_max = 128;
$thumb_hauteur_max = 128;
$srcImage = imagecreatefromjpeg($dest.$img_finale);
			$srcWidth    = imagesx( $srcImage ); 
			$srcHeight   = imagesy( $srcImage ); 
			$ratioWidth  = $srcWidth/$thumb_largeur_max;
			$ratioHeight = $srcHeight/$thumb_hauteur_max;
			if ( ( $ratioWidth > 1 ) or ( $ratioHeight > 1 ) )
			    {
			      if ( $ratioWidth < $ratioHeight)
			      { 
			        $destWidth = $srcWidth/$ratioHeight;
			        $destHeight = $thumb_hauteur_max; 
			      }
			      else
			      { 
			        $destWidth = $thumb_largeur_max; 
			        $destHeight = $srcHeight/$ratioWidth;
			      }
			    }
			else
			{
			 $destWidth = $srcWidth;
			 $destHeight = $srcHeight;
			}
			$destImage = imagecreatetruecolor( $destWidth, $destHeight);
			imagecopyresampled( $destImage, $srcImage, 0, 0, 0, 0,$destWidth,$destHeight,$srcWidth,$srcHeight );
			if(!is_dir($rep_tn_finale))
			{
			mkdir($rep_tn_finale, 0755);
			chmod($rep_tn_finale, 0755); 
			}
			imagejpeg($destImage, $tn_finale);
}
}
$rep = "a_trier/";
$rep_dest = "galleries/";
$rep_erreur="en_erreur/";
$entree = opendir($rep);
$entree_erreur = opendir($rep_erreur);
$compteur_lot = 0;
while (($file = readdir($entree)) !== false && $compteur_lot <= 30)
{
	if (is_file($rep.$file) && $file !="." && $file !=".." && get_extension($file) == 'jpg')
	{
		$img=$rep.$file;
		$file=str_replace(' ','',$file);
		$retour= get_date($img);
		$date=$retour[date];
		$annee=$retour[annee];
		$mois=$retour[mois];
		$jour_num=$retour[jour_num];
		$jour_nom=$retour[jour_nom];
		if (empty($annee) OR empty($mois) OR empty($jour_num) OR empty($jour_nom))
		{
			rename($img,$rep_erreur.$file);
		}
		else
		{
			$date=$retour[date];
			$annee=$retour[annee];
			$mois=$retour[mois];
			$jour_num=$retour[jour_num];
			$jour_nom=$retour[jour_nom];
			$dest=$rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/';
			if(!is_dir($rep_dest.$annee.'/'))
			{
			mkdir($rep_dest.$annee.'/', 0755);
			chmod($rep_dest.$annee.'/', 0755);			
			}
			if(!is_dir($rep_dest.$annee.'/'.$mois.'/'))
			{
			mkdir($rep_dest.$annee.'/'.$mois.'/', 0755);
			chmod($rep_dest.$annee.'/'.$mois.'/', 0755); 
			}
			if(!is_dir($rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/'))
			{
			mkdir($rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/', 0755);
			chmod($rep_dest.$annee.'/'.$mois.'/'.$jour_num.'/', 0755); 
			}
			$img_finale=$file.'_'.$date.'.jpg';
			$rep_tn_finale=$dest.'/thumbnail/';
			$tn_finale=$rep_tn_finale.'TN-'.$file.'_'.$date.'.jpg';
			rename($img,$dest.$img_finale);
			miniature($dest,$img_finale,$rep_tn_finale,$tn_finale);
			unset($exif_tab);
			sleep(0.5);
		}
	}
	$compteur_lot++;
}
if ($compteur_lot > 30)
{
	echo "<script language='javascript'>document.location.href='".$_SERVER['PHP_SELF']."';</script>";
}
else
{
	echo "Traitement terminé :<br />";
	echo "Fichiers en erreur :";
	echo '<table>';
	while (($file = readdir($entree_erreur)) !== false) 
	{
		if (is_file($rep_erreur.$file) && $file !="." && $file !="..")
		{
			echo '<tr>';
			echo '<td><a href="'.$rep_erreur.$file.'">'.$rep_erreur.$file.'</a></td>';
			echo '</tr>';
		}
	}
	echo '</table>';
}
?>
gandalf76fr 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 04h27.


 
 
 
 
Partenaires

Hébergement Web