WP-OnlineCounter (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 20)
  • Auteur
    Messages
  • #446626
    gP
    Participant
    Chevalier WordPress
    358 contributions

    Description: this plugin uses mySQL to keep track of all currently online visitors and those who visited your site before.
    add this to your template where you want the counter to show up:
    if(function_exists(wp_onlinecounter)) { wp_onlinecounter(); }
    J’ai activer le plugin, j’ai copier/coller cette pharse dans ma sidebar,
    mais seul ce texte apparaît. :(

    En haut du plugin il est écrit :
    add this to your template where you want the counter to show up:


    Mais là c’est le Bronx.

    http://wp-plugins.net/

    “Qui qui n’a” un compteur qui fonctionne ?

    Merci…

    #567141
    gP
    Participant
    Chevalier WordPress
    358 contributions
    gP wrote:

    C’est la ligne ci-dessus qui est bonne, mais j’avais oublié cela :

    CREATE TABLE `wp_onlinecounter` (
      `timestamp` int(15) NOT NULL default ‘0’,
      `ip` varchar(40) NOT NULL default ”,
      `count` int(15) NOT NULL default ‘0’,
      PRIMARY KEY  (`timestamp`)
    ) TYPE=MyISAM;

    Copier ce code dans une requête Sql de PhpMyAdmin et ça roule. 😆
    Dur de dur quand on est nul en anglais. 😐

    #567142
    jiel
    Membre
    Chevalier WordPress
    175 contributions

    Ma table est bien créee chez free mais j’ai ce message dans ma sidebar :

    Warning: Missing argument 1 for wp_onlinecounter() in /var/www/free.fr/d/f/jielblog/wp-content/plugins/wp-onlinecounter.php on line 56

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/d/f/jielblog/wp-content/plugins/wp-onlinecounter.php on line 84

    #567143
    Michaels
    Membre
    Initié WordPress
    41 contributions

    J’ai eu le même problème, vraiment merdi*** ces plugins configurés à moitié.

    #567144
    Qwindoo
    Modérateur
    Maître WordPress
    2866 contributions

    Perso, j’ai régulièrement des problèmes de requêtes invalides (je pense que c’est lorsque le plugin tente d’enregistrer deux visiteurs à la fois 😕 😕 😕 )

    Aucune solution en vue… a part re-coder tout le b**d*l 😕

    #567145
    floppy
    Participant
    Padawan WordPress
    55 contributions

    ça marche très bien chez moi

    #567146
    benkenobi
    Gestionnaire du forum
    Maître WordPress
    4079 contributions

    Pas de problème pour moi on plus… (une fois ou 2 peut être mais rien d’alarmant…)

    #567147
    Qwindoo
    Modérateur
    Maître WordPress
    2866 contributions

    Par régulièrement, je voulais dire 5 ou 6 fois par semaine 🙂

    A mon avis, c’est quand le plugin enregistre deux visiteurs à la même seconde car il n’y a pas d’index sur la table de wp_onlinecounter ce qui provoque une erreur si on insère deux lignes avec un champ date identique 😕 😕

    J’ai l’impression que ce plugin a été codé avec les pieds…

    #567148
    benkenobi
    Gestionnaire du forum
    Maître WordPress
    4079 contributions
    MS-DOS_1991 wrote:
    J’ai l’impression que ce plugin a été codé avec les pieds…

    Recode le avec les mains alors ! :D

    #567149
    Qwindoo
    Modérateur
    Maître WordPress
    2866 contributions

    …Pourquoi pas après tout :D

    Je vais voir ce que je peux faire :fouet::cool::cool:

    #567150
    Qwindoo
    Modérateur
    Maître WordPress
    2866 contributions

    Bon j’ai viré tout ce qui ne m’intéressait pas et j’ai gagné une dizaine de requêtes :fouet::lol::lol:

    Par contre, je n’ai pas testé avec plusieurs utilisateurs concourant…
    Quelqu’un pourrait-il venir sur mon blog ? (page d’accueil) ? :D :D

    #567151
    AmO
    Participant
    Maître WordPress
    4452 contributions
    MS-DOS_1991 wrote:
    Bon j’ai viré tout ce qui ne m’intéressait pas et j’ai gagné une dizaine de requêtes :fouet::lol::lol:

    Par contre, je n’ai pas testé avec plusieurs utilisateurs concourant…
    Quelqu’un pourrait-il venir sur mon blog ? (page d’accueil) ? :D :D

    Tu partages ton hack ? ca m’intéresse !

    #567152
    Qwindoo
    Modérateur
    Maître WordPress
    2866 contributions

    Voilà la première modification : (j’avais continué mais ça plantait xD )

    query(‘DELETE FROM wp_onlinecounter WHERE timestamp get_var(“SELECT timestamp FROM wp_onlinecounter WHERE ip = ‘$user_ip'”);
      if (empty($current_visitor_time))
      $current_visitor_time = 0;
      
      $max_onlineusers = get_option(‘wp-onlinecounter_maxonline’);
    
      if ($current_visitor_time == 0)
      {
        $total_count++;
        update_option(‘wp-onlinecounter_totalcount’, $total_count);
        $insert = $wpdb->query(“INSERT INTO wp_onlinecounter VALUES (‘$user_ip’, $timestamp)”);
      }
      elseif ($current_visitor_time query(“UPDATE wp_onlinecounter SET ‘timestamp’ = $timestamp WHERE ip = ‘$user_ip'”);
      
      $current_online = $wpdb->query(“SELECT COUNT(ip) FROM wp_onlinecounter”);
        
      if ($current_online > $max_onlineusers)
      	update_option(‘wp-onlinecounter_maxonline’, $current_online);
    
      if ($show)
      {
       	echo ‘<li>‘,$current_online,’ visiteurs en ligne actuellement</li>‘;
       	echo ‘<li>‘,$max_onlineusers,’ visiteurs connectés (record)</li>‘;
     		echo ‘<li>‘,$total_count,’ visiteurs au total</li>‘;
      }
    }
    
    //function to create the table on plugin activation
    add_action(‘activate_wp-onlinecounter.php’,’wpoc_install’);
    function wpoc_install () {
    	global $table_prefix, $wpoc_tablename, $wpdb;
    
    	$table = $table_prefix . $wpoc_tablename;
    	if($wpdb->get_var(“show tables like ‘$table'”) != $table) {
          
    		$sql = “CREATE TABLE “.$table.” (
    				timestamp int(15) NOT NULL default ‘0’,
    				ip varchar(15) NOT NULL default ”,
    				count int(15) NOT NULL default ‘0’,
    				maxon int(6) NOT NULL default ‘0’,
    				maxontime int(15) NOT NULL default ‘0’,
    				uri text NOT NULL default ”,
    				PRIMARY KEY  (timestamp, ip)
    		);”;
    
    		require_once(ABSPATH . ‘wp-admin/upgrade-functions.php’);
    		dbDelta($sql);
    	}elseif($wpdb->get_var(“SHOW COLUMNS FROM “.$table.” LIKE ‘uri'”) != ‘uri’) {
      		$wpdb->query(“ALTER TABLE wp_onlinecounter ADD uri TEXT NOT NULL”);
    	}
      
    }
    ?>

    Pour la table SQL, il n’y a plus que 2 champs : ip en VARCHAR primaire (donc unique) et timestamp en BIGINT
    C’est pas encore top mais le plus lourd est enlevé 🙂

    #567153
    kitten13
    Membre
    Chevalier WordPress
    207 contributions

    Merci pour ce hack

    #567154
    Qwindoo
    Modérateur
    Maître WordPress
    2866 contributions

    Hello 🙂

    Depuis septembre je l’ai encore amélioré un peu (suppression de variables temporaires inutiles, simplification SQL …)

    Voici le fichier du plugin maintenant ^^

    query(‘DELETE FROM ‘.$table_prefix.’onlinecounter WHERE oc_timestamp get_var(‘SELECT oc_timestamp FROM ‘.$table_prefix.’onlinecounter WHERE oc_ip = ”.$_SERVER[‘REMOTE_ADDR’].”’);
    
      $total_count = get_option(‘wp-onlinecounter_totalcount’);
      
      if (!$current_visitor_time)
      {
        update_option(‘wp-onlinecounter_totalcount’, ++$total_count);
        $wpdb->query(‘INSERT INTO ‘.$table_prefix.’onlinecounter (oc_ip, oc_timestamp) VALUES (”.$_SERVER[‘REMOTE_ADDR’].”, ‘.time().’)’);
      }
      else
        $wpdb->query(‘UPDATE ‘.$table_prefix.’onlinecounter SET oc_timestamp = ‘.time().’ WHERE oc_ip = ”.$_SERVER[‘REMOTE_ADDR’].”’);
      
      $current_online = $wpdb->get_var(‘SELECT COUNT(*) FROM ‘.$table_prefix.’onlinecounter’);
        
      if ($show)
        echo ‘<li>‘,$current_online,’ visiteurs en ligne actuellement</li><li>‘,$total_count,’ visiteurs au total</li>‘;
    }
    
    
    add_action(‘activate_wp-onlinecounter.php’,’wpoc_install’);
    function wpoc_install ()
    {
    	global $table_prefix, $wpdb;
    
    	if ($wpdb->get_var(‘SHOW TABLES LIKE ‘.$table_prefix.’onlinecounter’) != $table_prefix.’onlinecounter’)
      {
    		require_once(ABSPATH.’wp-admin/upgrade-functions.php’);
    		dbDelta(‘CREATE TABLE ‘.$table_prefix.’onlinecounter (oc_timestamp BIGINT (20) NOT NULL default ‘0’,
    				                                                  oc_ip        VARCHAR(20) NOT NULL default ”,
                                              				        PRIMARY KEY  (oc_ip)
                                                              );’);
    	}
    }
    ?>

    … sachant qu’on doit encore pouvoir gagner une requête en utilisant la forme conditionnelle en SQL:

    $wpdb->query(‘INSERT INTO table_name  (timestamp,  ip)
                                          (‘.time().”, ‘{$_SESSION[‘REMOTE_ADDR’]}’
                  ON DUPLICATE KEY UPDATE
                                           timestamp = “.time());

    …mais ça devient de l’optimisation atomique 🙂

15 sujets de 1 à 15 (sur un total de 20)
  • Vous devez être connecté pour répondre à ce sujet.