Php Symfony2每个用户访问的站点数
我试图计算用户在登录期间访问了多少页面 因此,我创建了一个正在侦听Kernel::TERMINATE事件的服务,每当用户访问我系统中的另一个站点时,该服务都会增加一个计数器Php Symfony2每个用户访问的站点数,php,symfony,Php,Symfony,我试图计算用户在登录期间访问了多少页面 因此,我创建了一个正在侦听Kernel::TERMINATE事件的服务,每当用户访问我系统中的另一个站点时,该服务都会增加一个计数器 class ActivityListener implements EventSubscriberInterface { private $doctrine; private $session; public function __construct(Registry $doctrine, Sess
class ActivityListener implements EventSubscriberInterface {
private $doctrine;
private $session;
public function __construct(Registry $doctrine, Session $session){
$this->doctrine = $doctrine;
$this->session = $session;
}
public static function getSubscribedEvents(){
return array(
KernelEvents::TERMINATE => 'increasePageCount'
);
}
public function increasePageCount(){
$em = $this->doctrine->getManager();
$log = $em->getRepository('Bundle:UserLog')->findBy(array('sessionId' => $this->session->getId()));
if($log){
$log = $log[0];
$log->increasePageCounter(); //Function in the entity that increases the count
$em->persist($log);
$em->flush();
}
}
}
代码将被调用,这很好,但每次页面更改最多可调用10次,这显然是一个非常重要的问题
我还尝试了Kernel::REQUEST事件,但结果相同
我能做些什么,使它在每个新页面请求中只增加一次页面计数器?e、 g.当返回控制器操作响应时,用户从账单概览转到某个账单的详细信息。如果你只想跟踪从一个视图到另一个视图的用户,这似乎是你最好的选择
看
当然,如果您只是在某个ajax调用中返回JSON响应或可能执行的重定向,也会触发此操作。所以所有的反应都被激发了。不仅仅是渲染。不过,您可以通过请求对其进行筛选
另外,我真的建议不要在Symfony内部进行用户跟踪。像Piwik这样的工具有一个很好的API,您可以在其中为用户创建好的配置文件并跟踪它们。还有一个用于Piwik的Symfony包,不确定它是否仍在维护甚至工作