php访问统计实现
实现PHP访问统计的方法
使用数据库记录访问信息
创建一个MySQL表存储访问数据,字段可包含IP、访问时间、页面URL等。通过PHP连接数据库并插入记录。
// 数据库连接
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 获取访问信息
$ip = $_SERVER['REMOTE_ADDR'];
$page = $_SERVER['REQUEST_URI'];
$time = date('Y-m-d H:i:s');
// 插入记录
$stmt = $conn->prepare("INSERT INTO access_logs (ip, page, access_time) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $ip, $page, $time);
$stmt->execute();
使用文本文件记录
对于简单统计,可将访问信息写入文本文件。需注意文件锁避免并发写入问题。
$logFile = 'access.log';
$data = date('Y-m-d H:i:s')." - ".$_SERVER['REMOTE_ADDR']." - ".$_SERVER['REQUEST_URI']."\n";
file_put_contents($logFile, $data, FILE_APPEND | LOCK_EX);
使用现成的统计工具
集成第三方统计工具如Google Analytics或Matomo(原Piwik)。需在页面中添加跟踪代码。
// Matomo跟踪代码示例
echo '<script>
var _paq = window._paq = window._paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var u="//your-matomo-domain/";
_paq.push(["setTrackerUrl", u+"matomo.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0];
g.async=true; g.src=u+"matomo.js"; s.parentNode.insertBefore(g,s);
})();
</script>';
统计功能扩展
添加更多统计维度如用户代理、引用来源等。可通过$_SERVER超全局变量获取。
$userAgent = $_SERVER['HTTP_USER_AGENT'];
$referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'direct';
数据分析与展示
编写查询语句从数据库提取数据,生成统计图表。可使用Chart.js等库可视化数据。
// 示例:查询每日访问量
$result = $conn->query("
SELECT DATE(access_time) as day, COUNT(*) as visits
FROM access_logs
GROUP BY day
ORDER BY day DESC
LIMIT 30
");
性能优化考虑
对于高流量网站,应考虑使用缓存机制或消息队列缓冲写入操作,避免直接频繁操作数据库。Redis可作为高性能的临时存储方案。







