php – 如何在不破坏MySQL数据库的情况下跟踪综合浏览量
我正在尝试使用以下查询跟踪
MySQL数据库中的网页浏览:
“UPDATE $table SET pageviews = pageviews 1 WHERE page_id = 1” 这适用于低到中等流量.但是,在高流量时,对DB的不断写入会导致高读/写争用,并最终导致DB崩溃. 我已经在Stackoverflow和其他地方阅读了几个QA,其中建议使用MongoDB作为替代方案.但是,这个选择不可用,我必须坚持使用MySQL.此外,我无法控制引擎 – MyISAM或InnoDB(InnoDB由于基于行的锁定而不是表格而表现更好,如MyISAM的情况). 考虑到上面的场景,在不破坏数据库(在数据库或其他情况下)的情况下,跟踪网页浏览的最佳方法是什么?我真的很感激答案提供代码片段作为起点(如果可行). 顺便说一下,我正在使用PHP. 更新:
我会使用memcached来存储计数,然后将它与cron上的数据库同步…
// Increment $page_id = 1; $memcache = new Memcache(); $memcache->connect('localhost',11211); if (!$memcache->get('page_' . $page_id)) { $memcache->set('page_' . $page_id,1); } else { $memcache->increment('page_' . $page_id,1); } // Cron if ($pageviews = $memcache->get('page_' . $page_id)) { $sql = "UPDATE pages SET pageviews = pageviews + " . $pageviews . " WHERE page_id = " . $page_id; mysql_query($sql); $memcache->delete('page_' . $page_id); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |