如何存储数百个用户每秒可以访问的PHP变量?

Mic*_*yen 2 php memory variables

目前,我有一个人们可以在某个团队的曲棍球比赛中打开的网站.当曲棍球队得分时,指定人员点击安全位置的按钮.这将使用当前时间戳更新MySQL数据库中的单个条目.

在网站的前端,有一个异步调用,每隔15秒运行一次PHP脚本,以查询数据库中的时间戳.然后脚本将当前时间与拉出的时间戳进行比较,如果它在当前时间戳的15秒内,它会在网页上触发一个事件,包括播放一个空气喇叭的声音并播放团队目标歌曲的短片.

在球队的比赛中,我通常会获得大量的视力,但是很多人抱怨在触发声音的目标得分后(最多)15秒的延迟.我想找到一种方法来解决这个问题.

显然,我不认为对于页面上的每个用户(想想100+)每一秒都会查询数据库.我可能会杀了我的数据库.那么,还有另一种方法可以实现我的结果吗?是否可以将PHP变量放入服务器的内存中,每个会话都可以将其拉出而不会产生使用数据库或文件系统读取的负面后果?

编辑:我的主机没有memcached供我使用,我无法安装它.这令人失望,因为这听起来像是最佳解决方案.有没有人有另一种想法,我可以查看不使用memcached

Joh*_*ker 7

在这种情况下,类似memcached(也以对象形式提供为 memcache)之类的东西很可能是完美的解决方案,其设计目标之一是"减少动态Web应用程序中的数据库负载".

您可以在其主要网站上阅读有关memcached的更多信息,或者只是使用上面的链接来研究PHP的模块.


min*_*ate 5

对于这样的事情,你想使用一种称为Comet的技术.它并不是特别困难,但需要一点努力.

基本上,您将为每个浏览器保持一个实时连接,而不是让它们每15秒重新打开一次连接.这允许您立即写入连接.

谷歌的"彗星"和"PHP",你应该找到一些很好的资源.http://www.zeitoun.net/articles/comet_and_php/start看起来很彻底.