[Symfony] Plugin sitemap

ViPHP
ViPHP | 5462 Messages

01 juin 2010, 11:04

5.3.0
hum dans ton php.ini
met la valeur de
phar.require_hash = Off
ca m'avait posé problème moi, mais c'était pas la même erreur

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

01 juin 2010, 12:02

Si jamais tu n'arrives pas à installer PEAR (je ne sais pas où tu en es, tu as marqué le message comme étant résolu, mais tu ne nous as pas fait de retour), il existe une autre solution :
Télécharger l'archive depuis le site, et copier le contenu de cette archive dans le répertoire "plugins" de ton projet.
Il ne te reste ensuite plus qu'à activer le plugin dans le fichier config/ProjectConfiguration.class.php
$this->enablePlugin('prestaSitemapPlugin');
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 68 Messages

01 juin 2010, 12:07

Si j'ai réussi via la ligne de commande que j'avais marqué . (c'était un problème connu apparemment).

J'ai donc installé ton plugin sitemap, et je fais joujou avec actuellement.

Encore merci pour votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

01 juin 2010, 14:10

N'hésite pas à me faire en retour dessus.

C'est toujours agréable d'avoir un retour sur son travail ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 68 Messages

01 juin 2010, 14:34

Je dois d'abord générer des pages d'atterrissages (car on a eu de gros problèmes de référencement suite au remplacement de l'ancien site) et ensuite je m'occupe du sitemap.

Je te ferai donc un retour dans la semaine (sans doute agrémenté de quelques questions :wink: )

Eléphant du PHP | 68 Messages

09 juin 2010, 16:36

Bon, je me lance enfin dans le SiteMap avec le plugin prestasitemap. (et je n'y connais pas grand chose).

Dans mon cas j'ai 40 000 annonces immobilières à créer dans le sitemap.
Si j'ai bien compris, je dois donc faire une boucle sur ces annonces dans le fichier sitemapUtils.class.php

Ce qui donnerait un truc du genre :
 foreach ($biensVente AS $bienVente){
         $o_sitemapSection->addUrl( new prestaSitemapUrl(  
'@vente_voir?id='.$bienVente->getBienId(), new DateTime(), prestaSitemapUrl::CHANGE_FREQUENCY_HOURLY, 0.9 ) );
  }  
Suis-je sur la bonne voie ou j'ai rien compris ?!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 juin 2010, 16:42

Effectivement, tu pars sur la bonne piste.

Toutefois, n'oublie pas de tester que la section est toujours à jour dans ce fichier, pour éviter de régénérer le sitemap à chaque appel :
        $o_sitemapSection   = new prestaSitemapSection( 'miscSectionName' );
        // check is it is up-to-date
        if( !$o_sitemapSection->isUpToDate() )
        {
            // Ici la boucle pour ajouter les urls
        }

N'oublie pas de prendre le temps de lire le README :
http://www.symfony-project.org/plugins/ ... gin_readme
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 68 Messages

09 juin 2010, 16:46

Ok merci
je me lance alors. :)

Edit :
1 er probleme : sur ma boucle j'obtiens l'erreur suivante :

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 53 bytes) in D:\dev\ImmoOuest\trunk\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Record.php on line 714


Au niveau du temps de mise à jour : Par défaut j'ai laissé "prestaSitemapUrl::CHANGE_FREQUENCY_HOURLY, 0.9 ".
N'est ce pas trop fréquent ?

Eléphant du PHP | 68 Messages

09 juin 2010, 18:33

Je reposte car en fait, je n'ai pas du saisir un truc capital je pense !!

Je suis en dev, et le contenu de mon sitemap est le suivant :

Code : Tout sélectionner

<sitemapindex xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd"> − <sitemap> <loc>http://symfony/sitemap.miscSectionName.xml</loc> <lastmod>2010-06-09T18:32:21+02:00</lastmod> </sitemap> </sitemapindex>
j'ai beau rajouté des lignes du type :
$o_sitemapSection->addUrl( new prestaSitemapUrl( '@homepage', new DateTime(), prestaSitemapUrl::CHANGE_FREQUENCY_HOURLY, 0.9 ) );
$o_sitemapSection->addUrl( new prestaSitemapUrl( '@services_accueil', new DateTime(), prestaSitemapUrl::CHANGE_FREQUENCY_HOURLY, 0.5 ) );
Cela ne change rien au contenu de mon sitemap.

Une idée?

Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 juin 2010, 18:36

Si tu comptes créer un fichier de 40 000 urls, il faudra plus de 135Mo de memory_limit :?

Sinon, pour ces 2 paramètres, en plus d'être facultatif, ils dépendent complétement de ton utilisation.
Si tu penses que tes annonces peuvent changer plusieurs fois par jours, alors un rafraichissement par heure n'est pas de trop, si elles ne changent jamais, alors c'est trop court.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 juin 2010, 18:39

Excuse, je n'avais pas vu ta dernière intervention.

Donc, le prestaSitemapPlugin gère les annuaires de sitemap (permettre d'avoir plus de 50 000 urls)
Donc, le fichier sitemap de base n'est que l'annuaire des différents sitemap. Essaye d'appeler l'url donnée dans le fichier (http://symfony/sitemap.miscSectionName.xml) et tu verras tes 40 000 urls
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 68 Messages

09 juin 2010, 18:50

Merci beaucoup !

Eléphant du PHP | 68 Messages

10 juin 2010, 09:51

Au sujet de l'option priority.

Cette option est-elle important / efficace par rapport au référencement.
Car il est assez difficile pour moi de déterminer l'importance des pages par rapport aux autres. (en gros 20 000 annonces location + 20 000 annonces vente)

Pour l'instant je suis très satisfait du plugin prestasitemap. Surtout que le service après vente est assuré par Zeus !!

merci encore


EDIT : mon seul problème c'est que j'ai de gros problèmes de performance. J'utilise doctrine pour info. Et j'ai monté le memory_limit dans php.ini à 1024.

exemple d''erreur :
Fatal error: Maximum execution time of 60 seconds exceeded in D:\dev\ImmoOuest\trunk\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Query\Tokenizer.php on line 480

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 juin 2010, 12:29

Bonjour,

Concernant l'option priority, elle permet de mettre en avant des liens pour que Google sache lesquels mettre en 1er dans son résultat. C'est vraiment à toi de décider lesquels méritent d'être mis en avant (homepage, page contact, inscription, ...)

Pour les problèmes de performance, je pense que c'est dû à tes requêtes plutôt qu'au plugin (c'est toujours la base qui est bloquante :D)
Essaye de travailler sur les modes d'hydratations pour récupérer des tableaux plutôt que des objets, ça te fera gagner du temps et de la mémoire.
Quelques liens :
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 68 Messages

10 juin 2010, 14:34

merci pour les liens qui sont très intéressants.

Effectivement ce n'est pas le plugin qui pose problème mais les url que je dois générer.

exemple : /vente/maison/rennes/154
les infos "maison" et "rennes" viennent de jointure externe sur l'objet "bien" dont l'id est 154.

Donc pour chaque url , j'ai 2 jointures ... Alors pour 40 000 , voir plus, url à générer c'est beaucoup trop long.
Je vais donc opté pour une table supplémentaire qui contiendra mes url.
Et c'est à partir de cette table que le plugin générera mon sitemap.