Php 如何检测用户是否登录symfony?

Php 如何检测用户是否登录symfony?,php,symfony1,symfony-1.4,sfdoctrineguard,Php,Symfony1,Symfony 1.4,Sfdoctrineguard,我需要知道如果symfony中的某个特定用户登录到应用程序中,我如何获得, 是否有方法获取当前登录用户的会话id 当我有一个名为的字段处于联机状态时,我尝试了一个表,当用户在应用程序上登录和注销时,我设置了它,因此当用户关闭浏览器或会话结束时,我遇到了一个问题,因此字段处于联机状态保持为真。这就是为什么我需要另一种方法来获取用户是否登录到应用程序的原因 任何建议都会很有用。您可以从用户那里发送ajax请求,并且只要有人不发送请求,例如1分钟,就可以将其状态更改为脱机。最好将状态存储在一些键值存储

我需要知道如果symfony中的某个特定用户登录到应用程序中,我如何获得, 是否有方法获取当前登录用户的会话id

当我有一个名为
的字段处于联机状态时,我尝试了一个表,当用户在应用程序上登录和注销时,我设置了它,因此当用户关闭浏览器或会话结束时,我遇到了一个问题,因此
字段处于联机状态
保持为真。这就是为什么我需要另一种方法来获取用户是否登录到应用程序的原因


任何建议都会很有用。

您可以从用户那里发送ajax请求,并且只要有人不发送请求,例如1分钟,就可以将其状态更改为脱机。最好将状态存储在一些键值存储中,如MemCache。在这里查找。

在ajax中创建一个类似于
LastOnlineStamp
的数据库字段和一个
ping
方法,该方法每分钟调用一个具有相同会话的服务。然后让ping服务更新
lastonlinestamp
。如果此值大于1分钟,则表示用户处于脱机状态。
但是:这将增加对服务器的请求数量。

谢谢,这将是一个解决方案,但是如果应用程序处于非活动状态超过15分钟,则必须关闭会话。例如,对于每5分钟一次ajax请求,会话从未关闭。我不明白您打算在哪里使用会话来存储状态,或者我错过了什么?我只想知道,如果用户已登录,在不活动的情况下,告诉用户session_id()在15分钟内安全关闭,每5分钟一次ajax请求,session永远不会关闭,这是不允许的。只有在检测到用户在页面中做了什么(mouseevent或keypress,您可以使用jquery插件)时,才可以发送ping ajax,如果用户不做任何操作就打开浏览器,则不会发送ping,会话将过期。我不建议将会话数据或状态存储在memcache上,因为您无法保证状态存储在内存中的持久性。