如何在javascript中运行没有settimeout和setinterval函数的拍卖?

时间:2012-07-20 09:51:47

标签: php javascript node.js socket.io

我需要一个建议来创建一个速度和性能更好的拍卖网站。基本上我通过使用setinterval和settimeout函数来收集知识来运行倒计时,我开发了这个(由于请求已经每秒都发送到服务器,因此服务器上的速度很慢)

真的我需要的是一旦服务器收到请求=>响应将需要更新给正在参与竞价的所有用户。

对此的任何建议都非常感谢。谢谢。

5 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

你可以创建一个拍卖标识符,客户端应该通过AJAX调用来检查更改,每秒或你想要的频率。

喜欢

needsUpdate(auctionId);

作为回报,您要么获得false,要么获得更新后的值

答案 2 :(得分:0)

在不详细了解您的要求的情况下,以下是我过去解决该问题的方法。 第一:在服务器上运行脚本很重要。如果您每个客户每秒都这样做并且您有许多客户,那么您将需要一个大数据中心。 ; - )

请改用纯文本文件。 让我们说像“auction2343.txt”这样的东西,其中2343是一些对你有意义的拍卖。

服务器不需要调用(昂贵的)进程来返回该文件的内容。

在服务器端,制作一些每秒运行一次的cronjob,以便在需要时更新文件。 或者,只有在有人出价时才更新它。 弄清楚在你的情况下有什么用。

在文件中放置Javascript可用于决定做什么的内容,例如最后一次出价。

如果Javascript发现出价高于其拥有的最后一个值,您可以执行其他操作,例如在服务器上启动真实(昂贵)脚本,或者只显示客户端,或者您需要的任何内容。

确保如果您使用HXR(“ajax”),则会为文本文件的URL添加一些时间戳(“auction2343.txt”),因此您的客户端不会获取缓存版本。

例如:

http://www.example.com/auction2343.txt?timestamp= [millis here]

答案 3 :(得分:0)

设置不同类型的服务器。不要试图让一个好的拍卖网站在向普通的PHP服务器发出大量请求时运行。

有几个更好的选项,其中一个包括nodejs(http://nodejs.org/

否则,请尝试在当前应用程序中进行longpolling。但它会对服务器造成很大的压力。

答案 4 :(得分:0)

这里有类似的问题,答案非常好:

How do I implement basic "Long Polling"?

问题是,apache2是一个阻塞的Web服务器,它要求您每隔一段时间轮询一次服务器,以获得响应。

如果您使用像node.js http://nodejs.org/这样的技术,它将允许您从服务器端推送到客户端,而无需刷新页面。