gpt4 book ai didi

server-side - 需要一个服务器端计时器(独立于浏览器)

转载 作者:行者123 更新时间:2023-12-02 05:12:23 26 4
gpt4 key购买 nike

我正在组建一个网站,该网站将跟踪具有时间限制的用户定义的事件。每个用户都可以自由创建事件,当时间限制到期时,服务器需要根据事件的结果采取一些行动。我遇到的具体问题是计时:像 eBay 的拍卖时钟一样思考——它设置为在特定时间到期,显然在服务器端运行,并在时间用完时采取一些行动。不幸的是,搜索“服务器端计时器”只会带回从服务器而非客户端获取时间的计时器的结果。 :(

最明显的解决方案是在服务器上运行一个脚本,一些程序会监视所有时钟并在其中任何一个过期时采取行动。可悲的是,我将使用免费的虚拟主机,并且真诚地怀疑我能否找到允许我在他们的服务器上运行任意东西的人。

我研究过的解决方案:

主要概念选项 1:说服每个用户的浏览器运行必要的计时器(琐碎的 javascript),并在计时器到期时采取必要的操作。这种方法的问题很明显:可能有数百个(如果不是数千个)同时到期的计时器(它们往往会在集群中到期),最坏的情况是每个可能的用户都可能看到他们的计时器到期。这是等待在最糟糕的时刻发生的服务器过载。

主要概念选项 2:拥有一个真正值得信赖的浏览器,例如,用户以“cron”身份登录网站,它可以同时运行所有计时器。该操作将全部发生在该浏览器的 javascript 中,并且会很好地工作,只要该浏览器永远不会崩溃,那台机器永远不会失败,并且互联网连接永远不会中断。

如您所见,我觉得我在这个问题上找错了地方。其他一些已经提出的想法:

  • AJAX:我在这里没有看到任何东西可以完全满足我的需要。这都是浏览器运行的东西,完全不像可以独立于用户浏览器运行的服务器端进程。
  • PHP:在服务器上整齐地运行,但仅响应客户端请求。我没有看到任何干净的方法来让 PHP fork 进程并运行独立于用户浏览器的计时器。
  • JS:与 PHP 相同的问题,但更易于阅读。 ;)
  • Ruby:Ruby 可能有一些多线程,但对我来说不是很明显。是否可以让每个用户的浏览器检查计时器进程是否正在为他们的事件运行,如果没有,则生成一个新的服务器端 ruby​​ 进程?
  • 我对想法持开放态度——我已经开始研究 JS 和 PHP 中的概念,但我不受任何语言的束缚,尤其是。实际上,唯一的限制是我不会拥有运行网站的服务器,所以我不能只运行一个整洁的小本地进程来完成我需要它做的事情。 :(

    有什么想法吗?提前致谢,

    最佳答案

    ASP.NET 具有多线程。您可以使用一个静态变量来收集事件数据,并在时机成熟时使用线程来执行任何需要的操作。在清空静态变量以备将来使用之后。

    http://leedale.wordpress.com/2007/07/22/multithreading-with-aspnet-20/

    关于server-side - 需要一个服务器端计时器(独立于浏览器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4404832/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com