Débutant : soucis avec getimagesize

Résolu
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008 - 10 juin 2008 à 12:21
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008 - 12 juin 2008 à 14:20
Bonjour,

je rencontre un soucis avec getimagesize.
je m'explique:
mon script récupère les propriétés Hauteur, largeure via getimagesize.
Pour l'image suivante, j'obtiens ce message d'erreur.
Warning:
getimagesize(http://bwf.m6im.eu.iogw.com/img.k484e4846b23b8/XX8fibb3dbh12b17baa/MyM6.frVideo.jpeg):
failed to open stream: HTTP request failed!

Mon soucis est principalement que mon script se bloque sur cette étape et fini par planter complètement :
Fatal error: Maximum execution time of 300 seconds exceeded

L'en-tête de l'image est:
ÿØÿà?�10;JFIF?�1;�1;??�1;?�1;??ÿþ?;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 87

Comment puis-je contourner le problème.
Ce que je souhaiterai c'est tout simplement que le script passe ça route et continu lorsqu'il est dans cette situation.
La récupération des attributs de l'image n'est que secondaire.

ma ligne de code est :
$aSize = getimagesize($UrlValide);

Comment puis-je articulé une sorte de condition en récupérant les valeures de <tt>E_WARNING et/ou de </tt><tt>E_NOTICE</tt><tt>?
Il semble que je devarai pouvoir utiliser le retour </tt><tt>FALSE</tt><tt> mais je n'y parviens pas.

Merci pour votre aide et vos suggestions.

</tt>Autodidacte, je ne demande qu'à apprendre... Merci de votre aide

9 réponses

JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
11 juin 2008 à 16:36
Salut ^^

Pour les fichiers distants sregarde sur php.net ;)

-> fopen(), file_get_contents() :p

<hr />Si ma reponse te convient, merci de l'accepter ! 
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
11 juin 2008 à 18:10
jojo738, lis la question avant de repondre stp...

M000004965, tu dois utiliser curl ou faire ca avec fsockopen. lire les headers, et voir si c'est un 404 ou un 200
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
10 juin 2008 à 13:44
salut

t'as ce message d'erreur :
failed to open stream: HTTP request failed!

ce qui veut dire que ton image n'existe pas...
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
10 juin 2008 à 14:11
Merci beaucoup pour cette info qui m'éclaire bien.

Je fait un éssai avec:
if (file_exists($UrlValide))
{
   $aSize = getimagesize($UrlValide);
   $imgWidth = $aSize[0];
   $imgHeight = $aSize[1];
   $imgType = $aSize[2];
}
et je clôture si tout est ok.

Autodidacte, je ne demande qu'à apprendre... Merci de votre aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
10 juin 2008 à 14:25
Excellent, un grand merci.

Autodidacte, je ne demande qu'à apprendre... Merci de votre aide
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
11 juin 2008 à 11:12
Oupsss, bonjour tout le monde…

Je relance ce post car en fait il s’avère que le problème n’est pas réglé, c’est même pire…

J’ai du louper quelque chose…

En fait maintenant mon script considère qu’aucune image n’existe.
Ci-dessous un exemple pour que vous puissiez recréer la situation :

Image : http://www.luds.net/images/header750_05.gif

Cette image fait partie d’une bannière donc elle existe réellement et n’est pas créée à la volée.

Mon code :

  $ImgExiste ='oui';
  $UrlValide = "http://www.luds.net/images/header750_05.gif";
  if (file_exists($UrlValide))
  {
     $aSize = getimagesize($UrlValide);
     $imgWidth = $aSize[0];
     $imgHeight = $aSize[1];
     $imgType = $aSize[2];
  }else{
       $imgWidth = 0;
       $imgHeight = 0;
       $imgType = 0;
       $ImgExiste ='non';
  }
        
  $bSize = getimagesize($UrlValide);
        
  echo ‘Image existante : ‘.$ImgExiste.'
';
  echo $aSize[3].'
';
  echo $bSize[3].'
';

Vous constaterez que ce code estime que l’image n’existe pas hors il me renvois les propriétés quand il n’y a pas de contrôle.

Qu’est ce que j’ai mal fait

D'avance merci pour vos conseils et suggestions

Autodidacte, je ne demande qu'à apprendre et comprendre... Merci de votre aide
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
11 juin 2008 à 13:16
Oki, à force de chercher et de creuser...

mon problème est très simple, file_exists ne permet pas de tester des fichiers distant !

Autodidacte, je ne demande qu'à apprendre... Merci de votre aide
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
11 juin 2008 à 20:05
Arf ^^ Lu trop vite, dsl ;)

<hr />Si ma reponse te convient, merci de l'accepter ! 
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
12 juin 2008 à 14:20
merci à vous,

j'utilise déjà curl et je me base sur les réponses http.
en fait mon script s'effectue dans une démarche qualité, il monitore des sites éditeurs de contenu pour web mobile.
je stock toutes les url et images en base et les requête une à une.
le soucis c'est que bon nombre d'éditeurs génèrent des images à la volée, les fichiers n'existent pas donc lorsque le script les requêtes, c'est mort.

j'ai contourné le problème en travaillant sur les balises hauteur – largeur présentes dans la réponse http retournée à curl. Ce n’est pas top mais je n’ai pas le choix, ma mission de presta se finie demain.
Je ne peux plus passer de temps sur le code.

En revanche je vais creuser vos suggestions à titre perso.

Je clôture ce post mais je vous ferai un retour à l’occase.

Encore merci pour votre aide et vos pistes.

Autodidacte, je ne demande qu'à apprendre... Merci de votre aide
0
Rejoignez-nous