首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Google Bots的ip会在我的数据库中多次保存?

为什么Google Bots的ip会在我的数据库中多次保存?
EN

Stack Overflow用户
提问于 2011-02-26 08:00:19
回答 1查看 150关注 0票数 2

在我的mysql数据库中发生了一些非常奇怪的事情。我有一个脚本,采取用户的ip地址,并将其保存在数据库中的5分钟。通过这样做,我可以显示当前在我的网站上活跃的人数。该脚本还会检查数据库中的ip地址是否已准备就绪。现在发生的事情是,总是有一个谷歌机器人带着一个特定的ip地址来。这个ip地址在我的数据库中保存了大约40次,所有的条目都有完全相同的时间戳。虽然我的脚本实际上是在将ip地址写入数据库之前检查ip地址是否已经存在,但这怎么可能呢?

谢谢你,菲尼

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-26 08:03:43

所以你有类似这样的东西:

代码语言:javascript
复制
if(!already_exists($ip))
   insert_into_db($ip)

这是一个很好的race condition示例,因为您的PHP脚本将并行运行,每个请求一个。

想象一下,当您有40个请求大致同时执行第一个if时,在数据库响应到来之前会发生什么情况……他们都认为IP地址不存在,并将其插入。

您可以使用ON DUPLICATE KEY UPDATE查询来解决此问题。

代码语言:javascript
复制
INSERT INTO visitors values (NOW(),$ip) ON DUPLICATE KEY UPDATE ts = NOW();

如果记录不存在,将插入该记录,如果存在,将更新ts列。

您需要包含IP地址的列上的UNIQUE索引才能执行此操作。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5124046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档