You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的PHP网站访问计数器会执行两次?

解决网站访问计数器每次触发两次的问题

嘿,我帮你排查了下这个问题——计数器每次访问加两次大概率不是PHP Bug或者主机的锅,更可能是浏览器发起了额外的请求触发了你的计数脚本。

最常见的情况就是浏览器自动请求网站的favicon.ico图标(就是标签栏上的小图标)。如果你的服务器根目录没有这个文件,浏览器会发起一次404请求,但这次请求同样会触发PHP的执行,导致你的counter.php被调用两次:一次是加载主页面index.php,一次是请求favicon.ico(而服务器可能把404请求也导向了index.php,进而再次包含counter.php)。

解决方案:

你可以通过两种方式解决这个问题:

1. 过滤非主页面的请求

修改你的counter.php,只在请求主页面index.php时才执行计数逻辑:

<?php
// 只对index.php的请求计数,排除favicon等资源请求
if ($_SERVER['SCRIPT_NAME'] === '/index.php') {
    $countFile = 'countlog.txt';
    // 处理文件不存在的情况,初始计数设为0
    $count = file_exists($countFile) ? intval(file_get_contents($countFile)) : 0;
    $count++;
    echo "$count hits\n";
    // 写入更新后的计数
    file_put_contents($countFile, $count);
}
?>

2. 添加favicon.ico文件

直接在网站根目录上传一个favicon.ico图标文件,这样浏览器就不会发起额外的404请求,自然也就不会触发两次计数了。

额外优化建议:

你原来的代码用fopen/fgets/fclose的方式有点繁琐,而且没有处理文件不存在的情况(第一次运行时countlog.txt还没创建,会报错)。上面的优化代码用file_get_contents和file_put_contents简化了逻辑,同时兼容了文件不存在的场景,更稳定可靠。

你可以先试试第一种方案,应该就能解决计数翻倍的问题啦!

内容的提问来源于stack exchange,提问作者Leutrim Osmani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:17:11