[Symfony] Plugin sitemap

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Symfony] Plugin sitemap

Re: [Symfony] Plugin sitemap

par zeus » 15 juin 2010, 10:58

le plugin passe par un url_for, et pourrais donc effectivement bloquer sur une url mal formatée.
Essaye de regarder la source du fichier sitemap.xml (depuis firefox) ou encore ce qui a été mis en cache (répertoire 'cache/' de ton projet) pour voir l'état réel de ton XML, et non pas ce que firefox t'affiche (il tente d'analyser le XML)

Sinon, comme je te le disais plus haut, le prestaSitemapPlugin sais dépasser les 50 000 urls par sitemap. Si tu as 70 000 urls, il va te générer un 1er fichier de 50 000 url, puis un second de 20 000 urls. Et le fichier central contiendra un lien vers ces 2 fichiers là ;)

Re: [Symfony] Plugin sitemap

par binouz » 15 juin 2010, 10:15

ok c'est noté.


Concernant le plugin, il vérifie les url ?
ou il les ajoute dans le sitemap sans vérification?

cela pourrait m'aider de savoir ce qui pourrait le gêner :)
Car j'ai testé des choses sur l'encodage mais sans résultat.

En fait ce que je crains, c'est que ce soit le nombre total de lignes qui me causent ce genre d'erreur .

Re: [Symfony] Plugin sitemap

par zeus » 15 juin 2010, 10:13

Ne pas vérifier les 40 000 lignes, mais quelques unes à la fois ;)

Sinon, pour toute nouvelle question qui ne concerne pas directement la question de base, préfère ouvrir un nouveau ticket ;)

Re: [Symfony] Plugin sitemap

par binouz » 15 juin 2010, 10:03

ok je vais vérifier les lignes ... (40 000 )

Autre question, en tout je dois avoir environs 70 000 lignes dans le sitemap.
Comment puis-je augmenter le timeout pour ne plus avoir cette erreur là :
atal error: Maximum execution time of 60 seconds exceeded in /data/*****/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection.php on line 473

Re: [Symfony] Plugin sitemap

par zeus » 15 juin 2010, 09:53

Essaye d'afficher ce que te génères cette ligne, et de regarder si elles sont valides
'http://www.immo-ouest.com/'.$url->getUrl()

Re: [Symfony] Plugin sitemap

par binouz » 15 juin 2010, 09:41

j'ouvre l'index du sitemap via firefox.

Pour info : si je ne charge pas la table supplémentaire, je n'ai pas l'erreur.

ci dessous le code ou j'ajoute les lignes de cette table dans le sitemap:
$o_sitemapSectionBiens   = new prestaSitemapSection( 'biens' );
        // check is it is up-to-date
        if( !$o_sitemapSectionBiens->isUpToDate() )
       	{
       		$urls = Doctrine::getTable("TabUrlSite")->getUrlSite();
       		foreach($urls AS $url){
       			if ($url->getUrl() != ""){
       				$o_sitemapSectionBiens->addUrl( new prestaSitemapUrl('http://www.immo-ouest.com/'.$url->getUrl(), new DateTime(), prestaSitemapUrl::CHANGE_FREQUENCY_HOURLY) );
       			}
       		}
       	}

Re: [Symfony] Plugin sitemap

par zeus » 15 juin 2010, 09:36

Mais quand j'ajoute ces URL j'ai un problème en chargeant le sitemap.
J'ai le message d'erreur suivant :

Erreur d'analyse XML : aucun élément trouvé
Emplacement : ***/sitemap.xml
Numéro de ligne 1, Colonne 1 :
Tu fais quoi exactement pour obtenir cette erreur ?
Tu accèdes au fichier sitemap.xml depuis un navigateur ? tu ouvres un des sitemap données par le sitemap central ?

Re: [Symfony] Plugin sitemap

par binouz » 15 juin 2010, 09:33

J'ai un petit soucis en ajoutant de nouvellles URL.

En fait j'ai une table du type : id / url
Je la parcoure et je rajoute les URL à mon sitemap.

Mais quand j'ajoute ces URL j'ai un problème en chargeant le sitemap.
J'ai le message d'erreur suivant :

Erreur d'analyse XML : aucun élément trouvé
Emplacement : ***/sitemap.xml
Numéro de ligne 1, Colonne 1 :

Je ne comprend pas pourquoi puisque ma table semble correctement remplie.

Merci d'avance

Re: [Symfony] Plugin sitemap

par zeus » 11 juin 2010, 12:15

Je vais être obligé de te reverser une partie de mon salaire si ca continue... :wink:
Yoohoo !!! avec ça, je vais conquérir le monde, renverser Obama, bruler BP dans sa mare de pétrole et, et, et ... aller me chercher un coca parce qu'il fait soif :langue:

Plus sérieusement, je participe bénévolement sur PHPFrance, ça me fait plaisir d'aider, de t'avoir fait comprendre quelques détails sur les sitemap XML, et dans le cas présent, plaisir de faire connaitre mon travail ;)
La plus grande récompense que tu peux me donner, c'est de faire de la publicité pour PHPFrance et pour mon travail (le prestaSitemapPlugin) ;)

Re: [Symfony] Plugin sitemap

par binouz » 11 juin 2010, 11:43

Oui beaucoup :)

Merci encore.

Tout est en place et fonctionne parfaitement.

Tu m'as vraiment bien dépanné sur ce coup là.
Je vais être obligé de te reverser une partie de mon salaire si ca continue... :wink:

Re: [Symfony] Plugin sitemap

par zeus » 11 juin 2010, 11:39

Pour commencer, tu as bien vu, c'est le nombre de liens qui est trop important, et le prestaSitemapPlugin le partage en plusieurs sitemap, pour que google ne s'arrête pas au nombre maximum par fichier.

Sinon, je crois que tu n'as pas compris un truc : dans tout les cas, c'est le fichier sitemap.xml qu'il faut déclarer auprès des moteurs de recherche (normalement, ils vont le chercher seul).
Les moteurs de recherches commencent par parser ce fichier, trouvent un code de la sorte :
[xml]<sitemapindex xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap ... eindex.xsd">
<sitemap>
<loc>http://symfony/sitemap.miscSectionName.xml</loc>
<lastmod>2010-06-09T18:32:21+02:00</lastmod>
</sitemap>
</sitemapindex>[/xml]
qui leur indique qu'ils sont en train de parser un annuaire de sitemap (balise <sitemapindex>), et qu'il faudra continuer en parsant chacun des sitemap (chaque fichier décrit par la balise <sitemap>).

Et comme le prestaSitemapPlugin gère tout seul le contenu du sitemap.xml en fonction du nombre de sitemap qu'il doit créé, les moteurs de recherche ont automatiquement connaissance de tous les fichiers à parser.

Est-ce plus clair pour toi ?

Re: [Symfony] Plugin sitemap

par binouz » 11 juin 2010, 11:32

Je m'en suis sorti en passant par une table intermédiaire.
Mais j'ai encore une question :
dans mon sitemap index il me génère 3 sitemap pour un sitemap section que j'avais déclaré.

je m'explique : j'ai déclaré
 $o_sitemapSectionAtterrissage   = new prestaSitemapSection( 'atterrissage' );
et je me retrouve avec :
sitemap.atterrissage.xml
sitemap.atterrissage_2.xml
sitemap.atterrissage_3.xml

Peut être qu'il découpe à cause de la taille des sections qui seraient trop grandes?

Dans ce cas, cela peut être gênant quand les pages sont dynamiques.
Si par exemple , du jour au lendemain je me retrouve avec une section en plus, je ne peux pas le prévoir et donc le déclarer aux moteurs de recherche.

Re: [Symfony] Plugin sitemap

par binouz » 10 juin 2010, 16:33

au départ j'avais fait :
public function getBiensAncien($prest){
		$q = $this->createQuery('b')
		->select('b.*')
		->leftJoin("b.TabAdresses a")
		->leftJoin("a.TabAdressesVilles v")
		->innerJoin("b.TabBiensType d")
		->where('b._bien_bienprestation_id=?',$prest)
		->addWhere('b.bien_etat=1')
		->addWhere('b._bien_progsneufs_reference IS NULL');
		$result =  $q->execute();
		return $result;
	}
Mais c'est quand même trop long...

Re: [Symfony] Plugin sitemap

par zeus » 10 juin 2010, 16:10

Tu sais que si tu fais la jointure depuis une requête de ce type, Doctrine ne relancera pas une requête à chaque fois que tu feras un $objet->getStuff() ?

Re: [Symfony] Plugin sitemap

par binouz » 10 juin 2010, 15:46

Je l'ai vaguement modifié. Dans ce cas elle n'a qu'un seul paramètre.
public function getBiensAncien($prest){
		$q = $this->createQuery('b')
		->select('b.*')
		->where('b._bien_bienprestation_id=?',$prest)
		->addWhere('b.bien_etat=1')
		->addWhere('b._bien_progsneufs_reference IS NULL');
		$result =  $q->execute();
		return $result;
	}