答案 0 :(得分:6)
嗨,ajax技术是做什么的 网站使用?
我快速检查了Bidzinga的源代码,看起来他们只进行简单的轮询(频繁!)。例如,在这个javascript文件(http://www.bidzinga.com/js/default.js)中,我展示了经常轮询的部分:
setInterval(function(){
var gettime = '/gettime.php?' + new Date().getTime();
$.ajax({
url: gettime,
success: function(data){
bidOfficialTime.html(data);
}
});
}, 1000);
如果您问我并且会在负载下杀死您的服务器,这是一个非常糟糕的方法。如果你看到这个使用PHP(/gettime.php
)的服务器没有APC(你需要至少安装/编译这个以获得良好的性能)那么你就是你可以打赌服务器无法应付,因为每次PHP都需要编译字节码。此外,它还需要在不使用APC或任何内存数据库(Redis,Memcached)时从光盘(有时是缓存)获取每个请求。即使以频繁的间隔进行轮询也绝不是一种聪明的方法,您可以确定您的服务器将在负载下死亡。
他们是否使用COMET技术?
Bidzinga不使用COMET,因为它使用普通轮询。
您建议使用什么,以及 可能是一个如何简单的描述 使用建议来实现它 技术
我想这取决于你的规模(大小)。
但我认为在开始时我会建议您使用pusher,因为它是一个托管解决方案,记录非常好,甚至还有一个免费的计划。
我们的免费沙盒计划包括最多 20个连接和100,000条消息 每天
我必须提醒您,免费/廉价计划没有SSL,所以您不应该通过网络发送任何私人信息。更大的价格计划确实有SSL,但每月费用为50美元。如果你自己实现这个,我认为你可以更便宜,但是那会花费你的时间(时间等于金钱)。以下是一些其他托管解决方案,可能适合您的账单:
首先,我想提一下,这些都不是PHP,因为我不认为PHP是为了解决这个问题而设计的。即使Facebook完全是PHP商店(现在经常使用HipHop)也同意我并实施chat using erlang。对于这些非常好的开源产品,您需要使用VPS。对于其中一些,如果您可以以root用户身份安装软件,这真的很好。虽然并非所有这些产品都需要VPS,但您应该能够编译软件。
答案 1 :(得分:1)
setInterval 会在每次更新时终止您的服务器/客户端。
为此你可以使用递归函数
//call foo onload
foo();
function foo(){
// ajax call
$.get('server.php', function(data) {
var recursivecall= setTimeout(function(){
foo(); // recalling
},1000);
});
}
如果需要,您可以使用clearTimeout(recursivecall);
在任何时间点中止recursivecall。
答案 2 :(得分:0)
他们每秒轮询服务器以检查/重新渲染时间并获取新数据。 它是经典的ajax with setInterval
setInterval(function(){ get_new_data(); }, 1000);
答案 3 :(得分:0)
您可以使用 node.js 和 socket.io 。 http://yoramkornatzky.com/2013/07/20/real-time-auctions-with-node-js/comment-page-1/#comment-55此链接可以带您开个好头。如果您是node和socket.io的新手,请告诉我。
答案 4 :(得分:0)
我是pennyauctionsoftware.net的开发人员,我们有一个产品,使用websockets和旧版浏览器的ajax后备测试12000个并发用户...它使用memcache,redis和浏览器缓存大量利用缓存