我正在尝试编写一个BlackB.com克隆脚本,主要用于学习目的。我是用PHP / MySQL / AJAX做的。
我在找到两个用户并连接它们时遇到了问题。 omegle的目的是“随机”连接两个用户。
我现在正在做的是以下内容:
现在这有几个问题,例如:
关于聊天,每个用户都使用AJAX调用从服务器轮询事件,我看到omegle,而不是每秒几个HTTP请求(比方说),做一个请求并等待答案,这意味着PHP脚本无限循环直到得到答案。我每次启动循环时都使用set_time_limit(30)执行此操作。然后当Ajax调用完成后重新开始。这种方法是否正确?
我会很感激您的答案, 谢谢,
卡洛斯
答案 0 :(得分:1)
我个人认为在轮询服务器和无限期地打开请求之间没有太大区别,因为它们都有明显的优缺点。尝试两者,看看哪一个花费更多。如果服务器忙于处理多个客户端会导致新访问者出现超时错误,那么对于像您这样的聊天室而言,这并不是一个好的情况。
一旦你有更多的东西可以解决,你也可以想看一下彗星服务器甚至网络套接字,但我会专注于让聊天/匹配功能先发挥作用。
所以,如果用户可以有多个聊天,但他们仍然每次聊天一对一配对,我个人会考虑一个解决方案,如果用户想要一个新的聊天(假设它是自愿的),他们实际上开始一个新的会议。使它成为每个用户对象,可以有多个(或无限)聊天会话,每个聊天会话都像你描述的那样:“正常;等待;聊天”。因此,如果用户A进入房间,他会点击“准备好”按钮,这会将他的初始会话从正常更改为等待。一旦他遇到某人,就会加入一个新的“正常”会话,他可以通过点击某个按钮等将其改为“等待”。
可能使常量循环下降的一件事是简单地查询有多少可用或“等待”用户。如果它为0,则继续检查,直到它高于0,而不是循环通过房间中的所有成员,看看他们是否在等待。
第二个想法,而不是0,使它大于1,因为如果你有一个计算总数的方法,那么你的家伙就会被计算在内。