[SPIP Zone] [Spip-zone-commit] r22994 - in /_plugins_/_stable_/couteau_suisse: config_outils.php cout_fonctions.php lang/couteauprive_fr.php outils/cout_fonctions.php plugin.xml

Très bonne idée pour mettre des serveur par terre ...

Exemple : Spip contrib c'est 200 visiteurs en permanence a 1requete toute les 20 secondes chacun cela fait 10 requetes par seconde en moyenne rien que pour le compteur de visiteur.
Cela double la charge serveur rien que pour un gadget...

Que tu t'amuses à faire cela sur tes serveurs, c'est ton droit, mais de grâce, ne distribue pas un gadget comme cela que tout le monde va installer et activer sans aucune conscience de l'impact.
Un rafraîchissement à chaque changement de page c'est bien assez, compte tenu de l'utilité très relative de ce truc ...

Cédric

Le 7 oct. 08 à 13:20, patfr@ifrance.com a écrit :

Author: patfr@ifrance.com
Date: Tue Oct 7 13:20:26 2008
New Revision: 22994

Log:
Visiteurs connectés : l'info est rafraîchie toutes les 20 secondes grâce à jQuery

+ déplacement du filtre cs_span
+ version 1.7.19.00

Modified:
    _plugins_/_stable_/couteau_suisse/config_outils.php
    _plugins_/_stable_/couteau_suisse/cout_fonctions.php
    _plugins_/_stable_/couteau_suisse/lang/couteauprive_fr.php
    _plugins_/_stable_/couteau_suisse/outils/cout_fonctions.php
    _plugins_/_stable_/couteau_suisse/plugin.xml

Modified: _plugins_/_stable_/couteau_suisse/config_outils.php

--- _plugins_/_stable_/couteau_suisse/config_outils.php (original)
+++ _plugins_/_stable_/couteau_suisse/config_outils.php Tue Oct 7 13:20:26 2008
@@ -652,10 +652,17 @@
   'id' => 'visiteurs_connectes',
   'auteur' => "Phil d'après spip-contrib",
   'categorie' => 'public',
- 'code:fonctions' => "define('_visiteurs_connectes',1);\nfunction cs_compter_visiteurs(){ return count(preg_files(_DIR_TMP.'visites/','.')); }",
+ 'code:options' => "define('_VISITEURS_CONNECTES',1);
+function cs_compter_visiteurs(){ return count(preg_files(_DIR_TMP.'visites/','.')); }
+function action_visiteurs_connectes(){ echo cs_compter_visiteurs(); return true; }",
   'version-min' => '1.9200', // pour la balise #ARRAY
-// une mise a jour toutes les 60sec ?
-// 'code:jq' => ' if(jQuery("span.cs_nb_visiteurs").length) trigger? ',
+ // une mise a jour toutes les 15 sec ?
+ 'code:js' => 'function Timer_visiteurs_connectes(){
+ jQuery("span.cs_nb_visiteurs").load("spip.php?action=visiteurs_connectes");
+ setTimeout("Timer_visiteurs_connectes()",20000);
+}',
+ 'code:jq' => ' if(jQuery("span.cs_nb_visiteurs").length) Timer_visiteurs_connectes(); ',
+ 'jquery' => 'oui',
));

//-----------------------------------------------------------------------------//

Modified: _plugins_/_stable_/couteau_suisse/cout_fonctions.php

--- _plugins_/_stable_/couteau_suisse/cout_fonctions.php (original)
+++ _plugins_/_stable_/couteau_suisse/cout_fonctions.php Tue Oct 7 13:20:26 2008
@@ -9,9 +9,6 @@
$GLOBALS['cs_fonctions_essai'] = 1;
//cs_log("INIT : cout_fonctions ($GLOBALS[cs_options]/$GLOBALS[cs_fonctions]/$GLOBALS[cs_init])");

-// filtre pour ajouter un <span> dans une noisette
-function cs_span($texte, $attr='') { return "<span $attr>$texte</span>"; }
-
// plugin initialise si cout_options est OK (fin de compilation par exemple)
if(!$GLOBALS['cs_init']) {
   if($GLOBALS['cs_options']) {

Modified: _plugins_/_stable_/couteau_suisse/lang/couteauprive_fr.php

--- _plugins_/_stable_/couteau_suisse/lang/couteauprive_fr.php (original)
+++ _plugins_/_stable_/couteau_suisse/lang/couteauprive_fr.php Tue Oct 7 13:20:26 2008
@@ -504,7 +504,7 @@
   'label:jcorner_plugin' => 'Installer le plugin {jQuery} suivant :',
   'jcorner_plugin' => '&laquo;&nbsp;Round Corners plugin&nbsp;&raquo;',

- 'visiteurs_connectes:description' => 'Offre une noisette pour votre squelette qui affiche le nombre de visiteurs connect&eacute;s sur le site public.
+ 'visiteurs_connectes:description' => 'Offre une noisette pour votre squelette qui affiche le nombre de visiteurs connect&eacute;s sur le site public. Cette valeur est mise &agrave; jour toutes les 20 secondes.

Ajoutez simplement <code><INCLURE{fond=fonds/visiteurs_connectes}></code> dans vos pages.',
   'visiteurs_connectes:nom' => 'Visiteurs connect&eacute;s',

Modified: _plugins_/_stable_/couteau_suisse/outils/cout_fonctions.php

--- _plugins_/_stable_/couteau_suisse/outils/cout_fonctions.php (original)
+++ _plugins_/_stable_/couteau_suisse/outils/cout_fonctions.php Tue Oct 7 13:20:26 2008
@@ -55,6 +55,9 @@
   return cs_propre("[{$texte}->{$lien}]");
}

+// filtre pour ajouter un <span> autour d'un texte
+function cs_span($texte, $attr='') { return "<span $attr>$texte</span>"; }
+
// Controle (basique!) des 3 balises usuelles p|div|span eventuellement coupees
// Attention : simple traitement pour des balises non imbriquees
function cs_safebalises($texte) {

Modified: _plugins_/_stable_/couteau_suisse/plugin.xml

--- _plugins_/_stable_/couteau_suisse/plugin.xml (original)
+++ _plugins_/_stable_/couteau_suisse/plugin.xml Tue Oct 7 13:20:26 2008
@@ -1,7 +1,7 @@
<plugin>
   <nom><multi>Swiss Knife[fr]Le Couteau Suisse[ca]El Ganivet Su&iacute;s[ar]&#1587;&#1603;&#1610;&#1606; &#1575;&#1604;&#1580;&#1610;&#1576;[nl]Het Zwitserland Mes[gl]A navalla su&iacute;za[es]La Navaja Suiza[de]Schweizer Taschenmesser</multi></nom>
   <icon>img/couteau-50.gif</icon>
- <version>1.7.18.07</version>
+ <version>1.7.19.00</version>
   <auteur>Patrice Vanneufville
_ &#169; 2007-2008 - Distribu&#233; sous licence GPL
   </auteur>

_______________________________________________
Spip-zone-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone-commit

Tu as raison, la charge peut monter très vite.
(Me suis un peu amusé en codant la chose)
Donc, soit je la retire, soit je l'explique...

Pat

cedric.morin@yterium.com a écrit :

Très bonne idée pour mettre des serveur par terre ...

Exemple : Spip contrib c'est 200 visiteurs en permanence a 1requete toute les 20 secondes chacun cela fait 10 requetes par seconde en moyenne rien que pour le compteur de visiteur.
Cela double la charge serveur rien que pour un gadget...

Que tu t'amuses à faire cela sur tes serveurs, c'est ton droit, mais de grâce, ne distribue pas un gadget comme cela que tout le monde va installer et activer sans aucune conscience de l'impact.
Un rafraîchissement à chaque changement de page c'est bien assez, compte tenu de l'utilité très relative de ce truc ...

Cédric

Le 7 oct. 08 à 13:20, patfr@ifrance.com a écrit :

Author: patfr@ifrance.com
Date: Tue Oct 7 13:20:26 2008
New Revision: 22994

Log:
Visiteurs connectés : l'info est rafraîchie toutes les 20 secondes grâce à jQuery

+ déplacement du filtre cs_span
+ version 1.7.19.00

Modified:
    _plugins_/_stable_/couteau_suisse/config_outils.php
    _plugins_/_stable_/couteau_suisse/cout_fonctions.php
    _plugins_/_stable_/couteau_suisse/lang/couteauprive_fr.php
    _plugins_/_stable_/couteau_suisse/outils/cout_fonctions.php
    _plugins_/_stable_/couteau_suisse/plugin.xml

Modified: _plugins_/_stable_/couteau_suisse/config_outils.php

--- _plugins_/_stable_/couteau_suisse/config_outils.php (original)
+++ _plugins_/_stable_/couteau_suisse/config_outils.php Tue Oct 7 13:20:26 2008
@@ -652,10 +652,17 @@
     'id' => 'visiteurs_connectes',
     'auteur' => "Phil d'apr&egrave;s spip-contrib",
     'categorie' => 'public',
- 'code:fonctions' => "define('_visiteurs_connectes',1);\nfunction cs_compter_visiteurs(){ return count(preg_files(_DIR_TMP.'visites/','.')); }",
+ 'code:options' => "define('_VISITEURS_CONNECTES',1);
+function cs_compter_visiteurs(){ return count(preg_files(_DIR_TMP.'visites/','.')); }
+function action_visiteurs_connectes(){ echo cs_compter_visiteurs(); return true; }",
     'version-min' => '1.9200', // pour la balise #ARRAY
-// une mise a jour toutes les 60sec ?
-// 'code:jq' => ' if(jQuery("span.cs_nb_visiteurs").length) trigger? ',
+ // une mise a jour toutes les 15 sec ?
+ 'code:js' => 'function Timer_visiteurs_connectes(){
+ jQuery("span.cs_nb_visiteurs").load("spip.php?action=visiteurs_connectes");

+ setTimeout("Timer_visiteurs_connectes()",20000); +}',
+ 'code:jq' => ' if(jQuery("span.cs_nb_visiteurs").length) Timer_visiteurs_connectes(); ',
+ 'jquery' => 'oui',
));

//-----------------------------------------------------------------------------//

Modified: _plugins_/_stable_/couteau_suisse/cout_fonctions.php

--- _plugins_/_stable_/couteau_suisse/cout_fonctions.php (original)
+++ _plugins_/_stable_/couteau_suisse/cout_fonctions.php Tue Oct 7 13:20:26 2008
@@ -9,9 +9,6 @@
$GLOBALS['cs_fonctions_essai'] = 1;
//cs_log("INIT : cout_fonctions ($GLOBALS[cs_options]/$GLOBALS[cs_fonctions]/$GLOBALS[cs_init])");

-// filtre pour ajouter un <span> dans une noisette
-function cs_span($texte, $attr='') { return "<span $attr>$texte</span>"; }
-
// plugin initialise si cout_options est OK (fin de compilation par exemple)
if(!$GLOBALS['cs_init']) {
     if($GLOBALS['cs_options']) {

Modified: _plugins_/_stable_/couteau_suisse/lang/couteauprive_fr.php

--- _plugins_/_stable_/couteau_suisse/lang/couteauprive_fr.php (original)
+++ _plugins_/_stable_/couteau_suisse/lang/couteauprive_fr.php Tue Oct 7 13:20:26 2008
@@ -504,7 +504,7 @@
     'label:jcorner_plugin' => 'Installer le plugin {jQuery} suivant :',
     'jcorner_plugin' => '&laquo;&nbsp;Round Corners plugin&nbsp;&raquo;',

- 'visiteurs_connectes:description' => 'Offre une noisette pour votre squelette qui affiche le nombre de visiteurs connect&eacute;s sur le site public.
+ 'visiteurs_connectes:description' => 'Offre une noisette pour votre squelette qui affiche le nombre de visiteurs connect&eacute;s sur le site public. Cette valeur est mise &agrave; jour toutes les 20 secondes.

Ajoutez simplement <code><INCLURE{fond=fonds/visiteurs_connectes}></code> dans vos pages.',
     'visiteurs_connectes:nom' => 'Visiteurs connect&eacute;s',

Modified: _plugins_/_stable_/couteau_suisse/outils/cout_fonctions.php

--- _plugins_/_stable_/couteau_suisse/outils/cout_fonctions.php (original)
+++ _plugins_/_stable_/couteau_suisse/outils/cout_fonctions.php Tue Oct 7 13:20:26 2008
@@ -55,6 +55,9 @@
     return cs_propre("[{$texte}->{$lien}]");
}

+// filtre pour ajouter un <span> autour d'un texte
+function cs_span($texte, $attr='') { return "<span $attr>$texte</span>"; }
+
// Controle (basique!) des 3 balises usuelles p|div|span eventuellement coupees
// Attention : simple traitement pour des balises non imbriquees
function cs_safebalises($texte) {

Modified: _plugins_/_stable_/couteau_suisse/plugin.xml

--- _plugins_/_stable_/couteau_suisse/plugin.xml (original)
+++ _plugins_/_stable_/couteau_suisse/plugin.xml Tue Oct 7 13:20:26 2008
@@ -1,7 +1,7 @@
<plugin>
     <nom><multi>Swiss Knife[fr]Le Couteau Suisse[ca]El Ganivet Su&iacute;s[ar]&#1587;&#1603;&#1610;&#1606; &#1575;&#1604;&#1580;&#1610;&#1576;[nl]Het Zwitserland Mes[gl]A navalla su&iacute;za[es]La Navaja Suiza[de]Schweizer Taschenmesser</multi></nom>
     <icon>img/couteau-50.gif</icon>
- <version>1.7.18.07</version>
+ <version>1.7.19.00</version>
     <auteur>Patrice Vanneufville
_ &#169; 2007-2008 - Distribu&#233; sous licence GPL
     </auteur>

_______________________________________________
Spip-zone-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone-commit

Le 7 oct. 08 à 14:37, Pat a écrit :

Tu as raison, la charge peut monter très vite.
(Me suis un peu amusé en codant la chose)
Donc, soit je la retire,

cela me parait plus sage

soit je l'explique...

De manière générale, une fonctionnalité grande consommatrice de charge serveur ne *doit pas* être installable en un clic.
Le déploiement de ce genre de fonctionnalité nécessite a minima de se poser les bonnes questions en terme de dimmensionnement, d'optimisation etc ...
C'est donc de toute façon une démarche réfléchie et qui ne peut être qu'à l'initiative d'un webmestre expérimenté, tout le contraire du mode de consommation clic&play des plugins.

Donc, dans le code diffusé en masse, toujours privilégier les choix non dangereux et qui ne risquent pas de mettre en péril un site ou un serveur.
Rien n'empêche ensuite de proposer ta solution à côté, en kit dans le plugin, mais à monter soi-même, avec les avertissements d'usage, ou en contrib etc ...

Cédric

Tu as raison, la charge peut monter très vite.

Tu peux mettre un cache de 1 minute sur le résultat ?

-- Fil

SPIP passe-t-il beaupcoup de temps à résoudre une action telle que celle-ci ?

function cs_compter_visiteurs(){
  return count(preg_files(_DIR_TMP.'visites/','.'));
}
function action_visiteurs_connectes(){
  echo cs_compter_visiteurs(); return true;
}

Un cache pourrait effectivement être placé en méta pas exemple, si ceux-ci sont déjà chargés...

Pat

Fil a écrit :

Tu as raison, la charge peut monter très vite.

Tu peux mettre un cache de 1 minute sur le résultat ?

-- Fil

aussi courte que soit l'action, cela n'en reste pas moins un hit apache+php toutes les 20s par visiteurs en ligne, soit grosso modo un nombre de requete par seconde doublé vu par le serveur.
Si en soi ce n'est rien de catastrophique pour un site, c'est suicidaire à grande échelle, et cela ne pourra que dégrader l'image pas très reluisante que les hébergeurs ont de Spip.
Donc pitié, pas de tels gadgets en libre service !

Cédric

Le 7 oct. 08 à 15:48, Pat a écrit :

SPIP passe-t-il beaupcoup de temps à résoudre une action telle que celle-ci ?

function cs_compter_visiteurs(){
  return count(preg_files(_DIR_TMP.'visites/','.'));
}
function action_visiteurs_connectes(){
  echo cs_compter_visiteurs(); return true;
}

Un cache pourrait effectivement être placé en méta pas exemple, si ceux-ci sont déjà chargés...

Pat

Fil a écrit :

Tu as raison, la charge peut monter très vite.

Tu peux mettre un cache de 1 minute sur le résultat ?
-- Fil

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone