让我说我有一个时间戳(如:1505148597)代表tchat中发布的最后一条消息。
然后我每秒有大约10000名用户请求/lastTimestamp.php。此页面返回时间戳,以便用户知道他们是否必须获取新消息。
我应该:
a)将时间戳存储在数据库中,并在每次用户调用/lastMessageTimestamp.php返回时发出sql请求
b)将时间戳存储在服务器上的文件中,并在每次用户调用/lastMessageTimestamp.php将其打开时将其打开
c)将其存储在内存中并以某种方式访问它?
最优化的方法是什么?我最关心的是性能和服务器负载。
注意:我没有寻找其他方式来进行tchat,这是我想要的方式,我只想知道最佳解决方案是什么(示例非常简化) ,它甚至不是tchat。实际上我使用的是Server Sent Events,所以基本上10k用户正在打开服务器的流,而服务器正在做一个
while(1) {
//check the timestamp with one of the solutions
sleep(1);
}
答案 0 :(得分:0)
您应该在前面放置一个缓存层来处理负载。我建议Redis:https://redis.io/
答案 1 :(得分:0)
这是使用内存存储的最佳示例=>商店一次检索多次。您始终存储最后一个时间戳(一次)。
或者:
apcu
apc_store
或
memcached
Memcached::set
Memcached设置起来有点复杂,但可以在非常高的情况下提供帮助