- Statut : non résolu
- Ce sujet contient 19 réponses, 9 participants et a été mis à jour pour la dernière fois par Nick Carraway, le il y a 16 années et 8 mois.
-
AuteurMessages
-
11 novembre 2005 à 17 h 09 min #446626
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.« Qui qui n’a » un compteur qui fonctionne ?
Merci…
13 novembre 2005 à 10 h 07 min #567141gP 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. 😐21 décembre 2005 à 10 h 37 min #567142Ma 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
26 septembre 2006 à 18 h 31 min #567143J’ai eu le même problème, vraiment merdi*** ces plugins configurés à moitié.
26 septembre 2006 à 18 h 35 min #567144Perso, 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 😕
26 septembre 2006 à 21 h 53 min #567145ça marche très bien chez moi
26 septembre 2006 à 22 h 16 min #567146Pas de problème pour moi on plus… (une fois ou 2 peut être mais rien d’alarmant…)
27 septembre 2006 à 10 h 34 min #567147Par 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…
27 septembre 2006 à 16 h 17 min #567148MS-DOS_1991 wrote:J’ai l’impression que ce plugin a été codé avec les pieds…Recode le avec les mains alors !
27 septembre 2006 à 16 h 25 min #567149…Pourquoi pas après tout
Je vais voir ce que je peux faire :fouet::cool::cool:
27 septembre 2006 à 17 h 07 min #567150Bon 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) ?27 septembre 2006 à 20 h 15 min #567151MS-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) ?Tu partages ton hack ? ca m’intéresse !
28 septembre 2006 à 10 h 29 min #567152Voilà 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é 🙂16 mai 2007 à 13 h 50 min #567153Merci pour ce hack
16 mai 2007 à 14 h 08 min #567154Hello 🙂
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 🙂
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.