【发布时间】:2019-11-22 07:29:17
【问题描述】:
在我的 Delphi Windows 应用程序中,我每天都需要登录。
起初我使用系统日期(2019 年 11 月 11 日),并且每次在 OnCreate 上比较系统日期和存储的日期,如果日期不同,我调用登录。
但是系统时间可以暂停吧?然后我想到了服务器时间,但我认为每次 OnCreate 检查服务器时间效率不高,因为我的应用程序启动了很多次。
无法使用基于令牌的系统进行检查,因为我正在使用支持 Firebase REST-API 并且它的令牌每隔一小时就会过期,但是如果我使用基于令牌的我仍然需要比较它并且系统时间可能会暂停。
如何有效检查日期是否更改?
inapp 时间很短,因为工作在 10 秒内完成,然后用户可能会关闭表单,并且下一个应用程序启动时间可能不到一分钟,为什么还要再次调用服务器时间?
【问题讨论】:
-
您对...效率低下...的具体定义是什么?您拒绝了 1) 询问您的服务器 2) 询问 NTP 服务器。我很确定您无法以足够快的速度重新启动和登录您的应用程序,以至于任何服务器都会因此感到疲劳甚至注意到您。此外,您还拒绝了自己的机器计时,因为有人可能会摆弄它的钟表。那么,接受答案的完整标准究竟是什么?
-
你需要下定决心。您要么通过测试本地机器的时间来有效地做到这一点,要么通过到达外部来降低效率。你不能两全其美。您是否进行过任何测试,看看伸出援手是否会对性能产生任何影响?测试所有三个选项并比较性能应该只需几分钟 - 如果需要超过半小时,我会感到惊讶。测试这三个,看看有什么区别,然后决定哪一个最适合您的需求。
-
@TomBrunberg:由于 OP 没有响应查询,我想知道保持这个 q 开放的意义是什么。
-
@MartynA 我还没有考虑关闭它,即使 OP 已收到关于我的评论的通知,以防他们现在很忙而无法回答。所以,我们会看到.....
-
@TomBrunberg 和每个人都在尝试回复,但网络中断,对此感到抱歉。我说
is not efficient,因为我认为不会。因为应用程序内的时间很短(我的意思是用户交互或应用程序中的工作在不到 10 秒内完成)所以表单是关闭的,但是在下一个应用程序启动时为什么我要再次请求服务器时间? (并且该应用程序是通过 NativeMessages 启动的),当我读到系统时间可以暂停时,我问了一些问题,但在其他 SO 问题中,我读到这是不可能的,那么什么是正确的?