经过几个小时的努力并重新阅读我的整个代码后,我终于弄清楚我的用户活动表中记录的额外请求是什么。
基本上我的MVC结构记录用户发出的每个请求。因此,如果用户进入索引页面或进行ajax调用,所有内容都记录在我的表中,但问题是每个请求都记录了 2条记录,并且无法理解原因。
后来我添加了一些调试 var_dumps ,发现第二个日志实际上是文件请求: /favicon.ico
如何在路由器中忽略这一点,以便它不会记录此类文件请求并只加载文件。我确实需要favicon.ico并希望使用它但不希望它成为请求的一部分,并且不想在每个请求上记录它。
现在每个页面都会记录2行,1行是正确的,第2行是favicon.ico。
如果有人遇到同样的问题,请提供帮助。
修改
请注意,如果我在根文件夹中添加了一些favicon.ico,那么它只会发出1个请求。所以,如果我没有favicon.icon那么它会提出2个请求。是否可以检查favicon.ico是否不存在,不要提出额外请求。
这里要求的是我的FrontController中的日志代码:
if ($user->isLoggedIn()) {
$m_useractivity = ModelFactory::Create(array('userActivity', $user->getUID()));
$log_id = $m_useractivity->logActivity($user->getUID(), $_SERVER['REQUEST_URI'], $a, $p, $request->getParams(), $request->browser(), $request->browserVersion(), $request->platform(), '', $request->ip(), $request->referer(), $request->getRequestMethod(), $request->type());
}
答案 0 :(得分:1)
只需检查REQUEST_URI for favicon.ico:
if ($user->isLoggedIn() && strpos($_SERVER['REQUEST_URI'],'favicon.ico') === false) {
//your code
}
此外,您可以使用.htaccess来防止此类请求完全击中您的控制器。通常情况下,如果请求的文件不存在,它应该只打你的PHP代码。