Décidément tu me gâtes. Pour faire honneur à ta bonne volonté, j'ai essayé de créer ledit plugin. J'ai fait tout bien comme indiqué. J'ai juste baptisé le plugin "Speed-Syndic" (plus classe, non ?) et, par conséquent, j'ai remplacé chaque occurence du mot toto par speed-syndic dans les 2 fichiers à créer.
Dans le fichier .php, j'ai cru comprendre que les numéros 1,5,12,24 de la ligne $sites=array(1,5,12,24); étaient les numéros des sites de mon choix (ceux qui doivent être synchronisés en temps réel), que j'ai donc modifiés en conséquence. J'ai uploadé le tout et le plugin a bien été reconnu dans l'espace privé, je l'ai activé, j'ai vidé le cache, puis suis retourné sur mon squelette rubrique où se trouvent les boucles : et là, rien.
Y a qu'à voir ici (le site n'est pas tout à fait achevé mais presque, alors je peux vous le montrer) :
http://reduplikation.nuxit.net/spip.php?rubrique111&var_mode=calcul
Comme vous pouvez le constater, il s'agit d'une page "portail" qui affiche les flux RSS de grands médias en ligne (boucles de syndication dans un squelette rubrique.html). Et comme vous le constaterez en cliquant sur l'icône RSS orange pointant vers le flux RSS d'origine de chaque site, la syndication n'est pas à jour, même après tout ça... On est le 25 janvier, et les boucles m'affichent encore les entrées RSS d'hier, le 24... Dommage pour un portail d'actualités...
Vais-je devoir utiliser MagpieRSS (http://magpierss.sourceforge.net/) ? Ce serait quand même dommage : SPIP devrait être capable d'en faire au moins autant. Je ne connais rien à PHP, mais si qqun réussit à obtenir ce que je cherche (synchronisation automatique immédiate de certains sites syndiqués à chaque d'un squelette rubrique contenant les boucles de syndication de ces sites), c'est promis j'écris ma première contrib sur spip-contrib.
Piffeo, qui croit en vous.
25/01/08, *Stephane* <stephane@rezo.net <mailto:stephane@rezo.net>> a écrit :
Piffeo a écrit :
> Merci beaucoup.
>
> Encore un détail, cependant : si define('_PERIODE_SYNDICATION',
2*60);
> sert à déterminer le délai (ici 2h donc) entre 2
synchronisations, alors
> à quoi sert define('_PERIODE_SYNDICATION_SUSPENDUE', 24*60); et
comment
> le régler par rapport au premier ?
c'est la periode pendant laquelle Spip va retenter une syndication
echouée avant de mettre le site en erreur.
>
> Et enfin : est-il possible qu'à chaque chargement de la page
contenant
> mes boucles de syndication, il y ait une synchronisation automatique
> immédiate de tous mes flux RSS (idéalement, c'est ce que je
voudrais) ?
heu, deja, la syndication ne se fait pas forcement à chaque tour
de cron
ensuite il syndique 1 ou 2 sites maxi à chaque hit.
Et puis si tu modifies le comportement general de spip, ca veut
dire que
tu vas arroser inutilement plein de sites qui ne mettent pas à
jour leur
fil RSS toutes les 5mn.
amha, il vaut vraiment syndiquer X sites à chaque hit, mieux vaut te
faire ca dans les regles avec un cron specifique (que l'on nommera
toto
par manque total d'imagination)
il faut faire un plugin (cad créer un repertoire plugins/toto/) :
plugins/toto/plugin.xml contenant :
<plugin>
<nom>
Toto
</nom>
<version>
0.0
</version>
<etat>
stable
</etat>
<description>
...
</description>
<prefix>
toto
</prefix>
<pipeline>
<nom>taches_generales_cron</nom>
<inclure>inc/toto.php</inclure>
</pipeline>
</plugin>
et plugins/toto/inc/toto.php contenant :
<?php
function cron_toto($t) {
//les sites à syndiquer
$sites=array(1,5,12,24);
//TODO : utiliser le plugin CFG...
include_spip("inc/syndic");
include_spip("inc/indexation");
foreach($sites as $id_syndic){
syndic_a_jour($id_syndic, 'sus');
spip_query("UPDATE spip_syndic SET
date_index=NOW() WHERE
id_syndic=$id_syndic");
marquer_indexer('spip_syndic', $id_syndic);
}
return true;
}
// la cle est la tache, la valeur le temps minimal, en secondes, entre
// deux memes taches
// NE PAS METTRE UNE VALEUR INFERIEURE A 30 (cf ci-dessus)
// Note : en fait mettre absolument une valeur superieure
// au max execution time PHP si j'ai bien compris
function toto_taches_generales_cron($taches_generales){
$taches_generales['toto']=60;
}
?>
(pas de caractères ni de retour à la ligne avant <?php ni après ?>)
voila, félicitation, tu viens de faire un plugin, reste qu'à le poser
sur spip-zone, l'améliorer un peu et ecrire un petit article sur
spip-contrib
@++
PS : le code ci-dessus est livré non testé, sans doute plein d'erreurs
et d'approximations, mais ca doit pas etre trop loin de ca non plus.
:)
PS2 : selon le nombre de sites à syndiquer et leur temps de
reponse, il
faudra peut etre augmenter le max execution time sur le serveur (si tu
peux...), en pensant à ajuster la valeur dans la tache.
_______________________________________________
liste spip
spip@rezo.net <mailto:spip@rezo.net> - désabonnement :
spip-off@rezo.net <mailto:spip-off@rezo.net>
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : FAQ webmestre - SPIP
------------------------------------------------------------------------
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : FAQ webmestre - SPIP
------------------------------------------------------------------------
No virus found in this incoming message.
Checked by AVG Free Edition. Version: 7.5.516 / Virus Database: 269.19.11/1242 - Release Date: 24/01/2008 20:32