• R/O
  • HTTP
  • SSH
  • HTTPS

提交

標籤
無標籤

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

blogger


Commit MetaInfo

修訂5e61ada1348469d980f7ae23061b29ca8803e55c (tree)
時間2017-05-29 03:59:55
作者umorigu <umorigu@gmai...>
Commiterumorigu

Log Message

BugTrack/2422 Improve access count up logic to avoid miscounting

Change Summary

差異

--- a/plugin/counter.inc.php
+++ b/plugin/counter.inc.php
@@ -89,9 +89,12 @@ function plugin_counter_get_count($page)
8989 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
9090 $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
9191 $pdo->setAttribute(PDO::ATTR_TIMEOUT, 5);
92- $stmt = $pdo->prepare('SELECT total, update_date,
93- today_viewcount, yesterday_viewcount, remote_addr
94- FROM page_counter WHERE page_name = ?');
92+ $stmt = $pdo->prepare(
93+'SELECT total, update_date,
94+ today_viewcount, yesterday_viewcount, remote_addr
95+ FROM page_counter
96+ WHERE page_name = ?'
97+ );
9598 $stmt->execute(array($page));
9699 $r = $stmt->fetch();
97100 if ($r === false) {
@@ -127,6 +130,7 @@ function plugin_counter_get_count($page)
127130
128131 // Anothoer day?
129132 $remote_addr = $_SERVER['REMOTE_ADDR'];
133+ $count_up = FALSE;
130134 if ($c['date'] != $default['date']) {
131135 $modify = TRUE;
132136 $is_yesterday = ($c['date'] == get_date('Y/m/d', UTIME - 24 * 60 * 60));
@@ -135,12 +139,14 @@ function plugin_counter_get_count($page)
135139 $c['yesterday'] = $is_yesterday ? $c['today'] : 0;
136140 $c['today'] = 1;
137141 $c['total']++;
142+ $count_up = TRUE;
138143 } else if ($c['ip'] != $remote_addr) {
139144 // Not the same host
140145 $modify = TRUE;
141146 $c['ip'] = $remote_addr;
142147 $c['today']++;
143148 $c['total']++;
149+ $count_up = TRUE;
144150 }
145151
146152 if (PLUGIN_COUNTER_USE_DB) {
@@ -148,24 +154,27 @@ function plugin_counter_get_count($page)
148154 try {
149155 if ($is_new_page) {
150156 // Insert
151- $add_stmt = $pdo->prepare('INSERT INTO page_counter
152- (page_name, total, update_date, today_viewcount,
153- yesterday_viewcount, remote_addr)
154- values (?, ?, ?, ?, ?, ?)');
157+ $add_stmt = $pdo->prepare(
158+'INSERT INTO page_counter
159+ (page_name, total, update_date, today_viewcount,
160+ yesterday_viewcount, remote_addr)
161+ VALUES (?, ?, ?, ?, ?, ?)'
162+ );
155163 $r_add = $add_stmt->execute(array($page, $c['total'],
156164 $c['date'], $c['today'], $c['yesterday'], $c['ip']));
157- } else {
158- // Update
159- $upd_stmt = $pdo->prepare('UPDATE page_counter
160- SET total = ?,
161- update_date = ?,
162- today_viewcount = ?,
163- yesterday_viewcount = ?,
164- remote_addr = ?
165- WHERE page_name = ?');
166- $r_upd = $upd_stmt->execute(array($c['total'],
167- $c['date'], $c['today'], $c['yesterday'], $c['ip'],
168- $page));
165+ } else if ($count_up) {
166+ // Update on counting up 'total'
167+ $upd_stmt = $pdo->prepare(
168+'UPDATE page_counter
169+ SET total = total + 1,
170+ update_date = ?,
171+ today_viewcount = ?,
172+ yesterday_viewcount = ?,
173+ remote_addr = ?
174+ WHERE page_name = ?'
175+ );
176+ $r_upd = $upd_stmt->execute(array($c['date'],
177+ $c['today'], $c['yesterday'], $c['ip'], $page));
169178 }
170179 } catch (PDOException $e) {
171180 foreach (array_keys($c) as $key) {
@@ -197,13 +206,15 @@ function plugin_counter_tool_setup_table() {
197206 PLUGIN_COUNTER_DB_OPTIONS);
198207 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
199208 $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
200- $r = $pdo->exec('CREATE TABLE page_counter (
201- page_name VARCHAR(300) PRIMARY KEY,
202- total INTEGER NOT NULL,
203- update_date VARCHAR(20) NOT NULL,
204- today_viewcount INTEGER NOT NULL,
205- yesterday_viewcount INTEGER NOT NULL,
206- remote_addr VARCHAR(100)
207- )');
209+ $r = $pdo->exec(
210+'CREATE TABLE page_counter (
211+ page_name VARCHAR(300) PRIMARY KEY,
212+ total INTEGER NOT NULL,
213+ update_date VARCHAR(20) NOT NULL,
214+ today_viewcount INTEGER NOT NULL,
215+ yesterday_viewcount INTEGER NOT NULL,
216+ remote_addr VARCHAR(100)
217+ )'
218+ );
208219 echo "OK\n";
209220 }