我正在尝试做一项仅实例化一次的服务。然后当新用户访问我的主页时,我可以在需要时重新使用它。
我想做的是一个实例化后设置日期时间的服务。当任何用户连接到我的主页时,我会向我的服务发送一个日期时间,然后比较两个日期时间(实例化服务时的日期时间和用户的日期时间),如果小时 >= 1,则执行某些操作。
我的问题是,当我刷新主页时,服务的日期时间是现在的时间,而不是我第一次实例化它的时间。似乎当我刷新时,它会重新创建一个新服务,但这不是我想要的。我检查了生产和开发,它没有改变任何东西。有什么办法可以做到这一点,或者这些服务不应该以这种方式工作吗?如果是这样,我该怎么办?
谢谢你们的帮助!
你无法实现它php
直接地。为了php
每个调用(页面刷新)都是一个单独的请求,因此每个调用都会创建类的一个新实例(定义为服务) - 这个新实例对设置了日期时间的前一个实例一无所知。
您可以通过(至少)两种方式解决这个问题:
1. 会议
创建您的服务类并将当前日期时间存储在会话中。下次调用(并实例化)您的服务时,您将检查之前的请求时间。该解决方案的缺点是会话将超时并且特定于用户,据我所知,无论哪个用户调用您的操作,您都希望拥有此会话。参见解决方案 2
2. 坚持
将日期时间保存在某个持久层中 - 例如数据库或文件。然后您可以从该数据源读取您的服务并了解当前请求和上一个请求之间的时间差是多少(并且您不必担心用户或会话超时)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)