IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

bug creation sitemap.xml.gz [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut bug creation sitemap.xml.gz
    Bonjour à tous, je suis entrain d'écrire une petite classe pour mes fichiers sitemap.
    Je tente désespérément de créer un fichier .gz pour Google mais celui-ci est toujours vide .
    Il contient bien le fichier en question mais entièrement vierge, ce n'est pas vraiment le but .
    Voici la partie qui déconne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    protected function makeFile($file, $data) {
    		if((int)$this->GZCompressionLevel !== 0) {
    			if(!extension_loaded('zlib')) {
    				throw new Exception('Unable to find zlib extension');
    				return false;
    			}
    			if(!$fp = fopen($data, "w")) {
    				throw new Exception('Unable to open sitemap file : '.$file);
    				return false;
    			}
    			$datafile = fread($fp, filesize($data));
    			fclose($fp);
    			$mode = 'w' . (int)$this->GZCompressionLevel;
    			if(!$zp = @gzopen($file, $mode)) {
    				throw new Exception('Unable to create/update GZIP sitemap file : '.$file);
    				return false;
    			}
    			gzwrite($zp, $datafile);
    			gzclose($zp);
    		} else {
    			if(!@file_put_contents($file, $datafile)) {
    				throw new Exception('Unable to create/update sitemap file : '.$file);
    				return false;
    			}
    		}
    		return true;
    	}
    Sa coince au niveau du fread() et filesize() car la taille est toujours de zéro hors le fichier xml fais 369 ko .
    Warning: fread() [function.fread]: Length parameter must be greater than 0 in
    C'est vraiment bizarre ou c'est moi qui lit le fichier comme une poire
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Salut,

    avant le vif du sujet, quelques remarques sur le code :

    • Il ne sert à rien de mettre des return après un throw, car ce code n'est pas exécuté. Après un throw, c'est le catch qui sera exécuté, ou rien s'il n'y a pas de catch (uncaught exception)
    • Evite les "@", il vaut mieux voir les erreurs de fonction apparaître en période de dév


    Ensuite, avec ton code, tu écrasais systématiquement le fichier que tu voulais gziper.

    Voici ton code modifié et qui fonctionne chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?php
     
     
    $data = "C:/toto.txt";
    $file = "c:/toto.gz";
     
    if(!extension_loaded('zlib')) {
      throw new Exception('Unable to find zlib extension');
    }
     
    if(!$fp = fopen($data, "r")) {
      throw new Exception('Unable to open sitemap file : '.$file);
    }
     
    $filesize = filesize($data);
     
    if($filesize===false)
    throw new Exception("filesize error");
     
    echo "Filesize: $filesize";
     
    $datafile = fread($fp, $filesize);
    fclose($fp);
    $mode = 'w' . "9";
    if(!$zp = @gzopen($file, $mode)) {
      throw new Exception('Unable to create/update GZIP sitemap file : '.$file);
    }
    gzwrite($zp, $datafile);
    gzclose($zp);
     
     
    ?>
    Karl3i.

  3. #3
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    j'ai fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    if(!extension_loaded('zlib')) {
    				throw new Exception('Unable to find zlib extension');
    			}
    			if(!$fp = fopen($data, "r")) {
    				throw new Exception('Unable to open sitemap file : '.$file);
    			}
    			$filesize = filesize($data);
    			if($filesize === false){
    				throw new Exception("filesize error");
    			}
    			echo "Filesize: $filesize";
     
    			$datafile = fread($fp, filesize($filesize));
    			fclose($fp);
    			$mode = 'w' . (int)$this->GZCompressionLevel;
    			if(!$zp = gzopen($file, $mode)) {
    				throw new Exception('Unable to create/update GZIP sitemap file : '.$file);
    			}
    			gzwrite($zp, $datafile);
    			gzclose($zp);
    Il me retourne :
    Filesize: 490
    Warning: filesize() [function.filesize]: stat failed for 490 in /var/www/html/site/lib/sitemap.php on line 76

    Warning: fread() [function.fread]: Length parameter must be greater than 0 in /var/www/html/site/lib/sitemap.php on line 76
    EDIT: j'ai rien dit mon double filesize retournais forcement une erreur
    Honte à moi
    merci
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mon sitemap.xml est correct ?
    Par {F-I} dans le forum Référencement
    Réponses: 3
    Dernier message: 14/02/2008, 19h19
  2. Creation de XML avec le moteur de JSP, mais sur disque
    Par ncachet dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 22/11/2007, 12h00
  3. Creation fichier XML
    Par GTSLASH dans le forum Langage SQL
    Réponses: 1
    Dernier message: 01/09/2007, 18h04
  4. [XML] Création d'XML journalisé
    Par themadmax dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 18/10/2006, 13h40
  5. Creation fichier xml avec xmlDocument
    Par c+cool dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 19/05/2006, 21h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo