Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的PHP页面视图跟踪器不工作_Php_Sql_Tracking - Fatal编程技术网

为什么我的PHP页面视图跟踪器不工作

为什么我的PHP页面视图跟踪器不工作,php,sql,tracking,Php,Sql,Tracking,我有一个简单的页面视图跟踪器,它使用PHP和MySQL的组合来记录页面刷新的次数。没有复杂的cookies,我只需要知道发生的原始刷新次数 看起来像这样 $link = mysql_connect('**********', '*********', '***********'); if (!$link) { die('Could not connect: ' . mysql_error()); } mysql_select_db("**********", $link); $quer

我有一个简单的页面视图跟踪器,它使用PHP和MySQL的组合来记录页面刷新的次数。没有复杂的cookies,我只需要知道发生的原始刷新次数

看起来像这样

$link = mysql_connect('**********', '*********', '***********');
if (!$link)
{
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("**********", $link);

$query = mysql_query("select value from settings where title like 'search_number'");
$result = mysql_fetch_array($query);
$search_number = $result["value"];
$new_search_number = $search_number + 1;
mysql_query("update settings set value='$new_search_number' where title like 'search_number'");

这段代码似乎在我能够运行的所有测试中都能工作,但在实时站点上,它返回的数字高得离谱。根据雅虎的说法,我们平均每天有400-500个查询,“我们使用搜索老板”,但页面跟踪器每天报告8900多个查询。谷歌分析证实了雅虎的数字。我不认为这段代码会因为简单而失败。我希望有人能对正在发生的事情有所了解

机器人会比你想象的更频繁地点击你的页面。您可以比较您的服务器日志,我怀疑您会看到许多对页面的请求

此外,Google Analytics在客户端工作,需要JavaScript,并且并不总是运行。据预测,这将占页面浏览量的10%左右。不过,最大的区别在于谷歌分析过滤掉了大量来自机器人的随机点击,因为几乎没有任何机器人运行分析代码


另一方面,您执行查询的方式有点不稳定。我建议您学习如何使用PDO进行预先准备好的查询,以避免SQL注入攻击。

机器人会比您想象的更频繁地访问您的页面。您可以比较您的服务器日志,我怀疑您会看到许多对页面的请求

此外,Google Analytics在客户端工作,需要JavaScript,并且并不总是运行。据预测,这将占页面浏览量的10%左右。不过,最大的区别在于谷歌分析过滤掉了大量来自机器人的随机点击,因为几乎没有任何机器人运行分析代码


另一方面,您执行查询的方式有点不稳定。我建议学习如何使用PDO进行准备好的查询,以避免SQL注入攻击。

直接在MySQL中更新值,否则并发脚本将覆盖其他值:

mysql_query("update settings set value=value + 1 where title like 'search_number'");

在MySQL中直接更新值,否则并发脚本将覆盖其他值:

mysql_query("update settings set value=value + 1 where title like 'search_number'");

我认为我们需要更多地了解您的站点/页面架构,以及如何调用这段脚本。如果它在被包含/需要中,您可能会在每页多次调用它?另一方面:您可以将这两个查询组合为“更新设置set value=value+1,其中标题类似于‘search_number’”。不确定MySQL的语法是否正确,但在MSSQL中它是有效的。我认为我们需要更多地了解您的站点/页面架构以及如何调用这段脚本。如果它在被包含/需要中,您可能会在每页多次调用它?另一方面:您可以将这两个查询组合为“更新设置set value=value+1,其中标题类似于‘search_number’”。不确定MySQL语法是否正确,但在MSSQL中它可以工作。