繁体   English   中英

Symfony一次实例化一项服务,并与多个用户一起使用

[英]Symfony instantiate a service one time and use it with several users

我正在尝试仅实例化一次的服务。 然后,当新用户访问我的主页时,可以在需要时重新使用它。 我正在尝试做的是一次实例化设置日期时间的服务。 当任何用户连接到我的主页时,我将日期时间发送到我的服务,并比较两个日期时间(一个实例化服务时的日期时间和一个用户时间),如果小时> = 1,则执行某项操作。

我的问题是,当我刷新主页时,服务的日期时间是现在的时间,而不是我第一次实例化它的时间。 看来,当我刷新它会重新创建一个新服务,而这并不是我想要的。 我签入了prod和dev,它没有任何改变。 我有什么办法可以做到这一点,还是服务不该那样工作? 如果是这样,我该怎么办?

谢谢你们的帮助!

您无法直接在php实现。 对于php每个调用(页面刷新)都是一个单独的请求,因此每个调用都会创建您的类的新实例(定义为服务)-这个新实例对设置了datetime的上一个实例一无所知。

您可以(至少)通过两种方式解决此问题:

1.会议

创建服务类并在会话中存储当前日期时间。 下次调用(并实例化)您的服务时,您将检查以前的请求时间。 该解决方案的缺点是会话将超时并且特定于用户,据我所知,无论哪个用户调用您的操作,您都希望拥有该会话。 请参阅解决方案编号2

2.持久性

将日期时间保存在某些持久层中,例如数据库或文件。 然后,您可以从该数据源读取服务,并告诉当前请求和上一个请求之间的时间差是什么(您不必担心用户或会话超时)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM