|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2010 Messages : 43 ![]() |
Bonjour
J'ai un script d'import de flux XML. Il me permet d'importer des offres de sites marchands. Ce script insère les offres dans ma base MySQL et upload des images sur mon serveur. Pour une raison que je ne comprends pas, les images d'un des partenaires ne s'uploadent pas bien et font que le script s'arrête provoquant notamment une déconnexion à la base MySQL. Voici le script d'upload d'image qui est appelé Code :
Voici un exemple d'une image qui provoque le problème. J'ai l'impression que le problème vient du fait que l''image est corrompue, sans pouvoir en être sûr. http://kgbdeals-images.s3.amazonaws....36_1_thumb.jpg Dès lors que le script rencontre une image problématique, il se déconnecte du serveur MySQL avec un message d'erreur : "Mysql server has gone away" ce qui empêche l'insertion des offres suivantes. Donc plusieurs questions : - comment faire pour permettre au script de continuer même si l'image pose un problème ? - comment faire pour uploader l'image même si elle est corrompue ? Merci par avance de votre aide car je galère depuis pas mal de jours sur ce problème ! |
||
|
|
00
|
|
|
#2 |
|
Membre expérimenté
![]() Développeur Inscription : février 2010 Messages : 360 ![]() |
Bonjour,
Au hasard (à la louche) : - ne pas redimmensionner les images avant l'upload complet et effectif - redimmensionner une copie de l'image - try catch ça existe en php ? |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2010 Messages : 43 ![]() |
Merci beaucoup, en effet cela me semble une bonne idée d'enregistrer avant de redimensionner, je vais tester cela ce soir et je te tiens au courant.
|
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2010 Messages : 43 ![]() |
Re,
En fait l'image est bien d'abord sauvegardée via le code appelé en début de fonction Code :
file_put_contents($img, file_get_contents($image_url)); Des idées ? |
|
|
00
|
|
|
#5 |
|
Membre expérimenté
![]() Développeur Inscription : février 2010 Messages : 360 ![]() |
Oui, effectivement. Le fichier est bien enregistré avec ce code.
C'est bien le format de l'image qui pose problème.(un format non-valide arrive souvent, puisque les formats sont des normes plus ou moins respectées - cf html/css) En fait, ce que je proposais était de copier ce fichier pour ne pas l'abîmé(garder le fichier corrompu quand même) et faire le traitement(redimensionnement) sur cette copie. Enfin, et surtout, pour s'assurer que le script ne plantera pas, il faut utiliser un bloc try/catch autour des traitements de l'image pour que le script puisse continuer normalement même si il rencontre une erreur. De plus on peut afficher une erreur dans les logs au sein du catch. |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2010 Messages : 43 ![]() |
Salut Nadox
Merci pour ta réponse. Donc si je comprends bien ce que tu suggères c'est de tester le processus suivant : 1. Upload du fichier, même corrompu 2. Copie de ce fichier 3. Resize et traitement de l'image sur la copie et non pas l'original Sur la copie du fichier, quelle est la fonction que tu recommandes ? Copy() tout simplement ? Merci |
|
|
00
|
|
|
#7 |
|
Membre expérimenté
![]() Développeur Inscription : février 2010 Messages : 360 ![]() |
En fait la copie n'était qu'une suggestion, afin de garder le fichier qui pose soucis et éventuellement le traiter manuellement.
Une image corrompu pour l'utilitaire de redimensionnement n'est pas forcément illisible avec un logiciel comme gimp ou paint dot net. Le plus important est d'avoir une capture de l'erreur de redimmensionnement sans bloquer le reste du processus. Regarde du côté du bloc try/catch. Je suppose d'ailleurs que si ça provoque une déconnection de la base de données, et une perte d'accés, c'est qu'il manque probablement une capture des erreurs concernant l'utilisation de la connexion à la base de données. (un autre bloc "try catch finally") http://php.net/manual/fr/language.exceptions.php |
|
|
00
|
|
|
#8 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2010 Messages : 43 ![]() |
Ok merci
J'ai l'URL d'origine de l'image donc pas besoin de copie je pense. Concernant les exceptions, je vais tester un truc du genre Code :
Merci |
||
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2010 Messages : 43 ![]() |
Salut,
Le try / catch fonctionne à merveille, merci beaucoup pour ton aide. En ervanche j'ai toujours ces images noires, je pense qu'elles sont corrompues.... pourtant des sites similaires au mien arrivent à bien uploader les images et utilisent les même sources de données que moi... Bon weekend |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com