我有一个网站,每天大约有2000名访问者,而且这个网站上有各种各样的搜索引擎机器人。我试着将会话结束时间缩短到20分钟,但我还是得到了大量的mysql_slow_queries。因此,我研究了这篇文章,Google crawler, cron and codeigniter sessions,完全忽略了会话表中的机器人,但是他们所做的是忽略IPs,但是当我分析数据库时,我看到同一个机器人使用不同的IPs。我注意到机器人每次都使用相同的用户代理,所以忽略用户代理是安全的吗?有什么必要的步骤来避免缓慢的查询和忽略机器人呢?
一些缓慢的查询
INSERT INTO `ci_sessions` (`session_id`, `ip_address`, `user_agent`, `last_activity`, `user_data`) VALUES ('619bfd8ef4171480645feb17a15323ee', '219.92.135.144', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15', 1384875135, '')
INSERT INTO `ci_sessions` (`session_id`, `ip_address`, `user_agent`, `last_activity`, `user_data`) VALUES ('fa48b5168b8e84d90dc9b87ce65dfc89', '66.249.74.112', 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', 1384875522, '')发布于 2013-11-19 17:23:20
在user_agent.php中编辑/config,并添加您在会话中看到的机器人,将它们添加到bot部分可以消除日志记录中的会话。
// There are hundreds of bots but these are the most common.
$robots = array(
'googlebot' => 'Googlebot',
'msnbot' => 'MSNBot',
'baiduspider' => 'Baiduspider',
'bingbot' => 'Bing',
'slurp' => 'Inktomi Slurp',
'yahoo' => 'Yahoo',
'askjeeves' => 'AskJeeves',
'fastcrawler' => 'FastCrawler',
'infoseek' => 'InfoSeek Robot 1.0',
'lycos' => 'Lycos',
'yandex' => 'YandexBot'
);你可以减少#的机器人,但不会消除他们。此用户代理进程可用于创建MY_session.php,然后排除与机器人匹配的代理的会话创建。
编辑:
我在github上创建了这个程序,并在这里记录了如下:
http://blog.biernacki.ca/2014/01/codeigniter-keeping-bots-out-of-your-sessions-table-or-how-i-cleaned-up-my-sessions/
尽情享受
发布于 2013-11-19 17:16:11
如果您想完全阻止这些机器人,可以尝试使用robots.txt吗?如果您只想忽略正在创建的会话,那么检查用户代理是否有"GoogleBot“这样的字符串可能是一个很好的解决方案。但我认为,需要扩展Session类才能做到这一点。
https://stackoverflow.com/questions/20077751
复制相似问题