Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 避免计时器上的多个客户端请求_Javascript_Php_Sockets_Cron_Client Side - Fatal编程技术网

Javascript 避免计时器上的多个客户端请求

Javascript 避免计时器上的多个客户端请求,javascript,php,sockets,cron,client-side,Javascript,Php,Sockets,Cron,Client Side,我需要一些想法 我正在用php(使用Symfony)创建一个页面,模拟拍卖竞价页面 我正在使用的倒计时脚本有一个finish.countdown事件,当脚本达到0时会触发该事件,当该事件发生时,我只需要一个人触发一个后续事件,该事件进入并执行一个功能(例如标记它已售出并将下一个项目推送为可用)。问题是所有这些触发器现在都存在于客户端软件中,因此不知道服务器状态,也不知道其他客户端在做什么,因此不可避免地所有这些触发器都必须调用服务器上的某些东西来触发后续活动。我试图避免的是,100个不同的用户都

我需要一些想法

我正在用php(使用Symfony)创建一个页面,模拟拍卖竞价页面

我正在使用的倒计时脚本有一个
finish.countdown
事件,当脚本达到0时会触发该事件,当该事件发生时,我只需要一个人触发一个后续事件,该事件进入并执行一个功能(例如标记它已售出并将下一个项目推送为可用)。问题是所有这些触发器现在都存在于客户端软件中,因此不知道服务器状态,也不知道其他客户端在做什么,因此不可避免地所有这些触发器都必须调用服务器上的某些东西来触发后续活动。我试图避免的是,100个不同的用户都可能调用运行该更新功能的脚本

它的工作原理是,我在项目中存储一个带有结束时间的时间戳,并且随着“出价”的到来而刷新,但最终是javascript在客户端浏览器上呈现该时间戳并触发基于该时间戳的事件

我们似乎无法将其全部保留在服务器端,因为cron作业没有连接到web套接字系统,它必须是一个持久的守护进程,就像为web套接字服务器供电的进程一样

我们如何编写代码,使一个而不是所有客户端请求同时运行该函数?或者,我们是不是想错了


欢迎所有想法:)谢谢你。永远不要信任客户机,一切都必须在服务器端进行验证。2.当客户出价时,更新相关信息,并且在结束时间后不接受出价。您可能需要一个cron或daemon来处理已经完成的拍卖,不要指望客户端触发这个。谢谢。我认为潜在的daemon/cron->websockets似乎非常困难,这就是为什么最初的想法是绕过它。我们将构建另一个与web套接字并行运行的守护进程(并集成到其中,它需要广播功能),可以处理类似于这种情况的事情…任何外部脚本都只需查询lot表中lot ID的结束时间,并检查是否已达到该时间。。。这部分本身并不难完成。。。但是,当你加上它必须相当一致地运行,并且必须告诉web套接字服务器上的客户机连接,新的东西已经被推到环中,当前的产品现在已经售出,这就是困难的地方