你今天登录的用户超过10个(用户过多app系统崩溃怎么办)

lxf2023-05-26 21:20:01

php+mysql海量用户登录解决方案解析,mysql用户登录。
本文分析php+mysql的海量用户登录解决方案。分享给大家,供大家参考。具体分析如下:

百度、QQ、360等大公司都有上亿用户。不仅所有子网站都通过一个账号登录,还开放用户平台供其他网站使用。这种水平的数据和访问量如果不优化,估计很快就下来了。这些公司是一个特殊的团队,维护一个登录,细节非常优秀。现在大致说说他们的设计方案。

说到大数据,压力不在PHP,主要在MySQL,PHP可以做负载均衡,20、100台机器都抵挡不住。这不是瓶颈。

但是,MySQL是单点。无论您做多少个从查询,它都是一个优化的查询。更新数据不是简单加机器就能解决的,查询也可以通过Memcache缓存减轻压力,不需要做很多从。一般一个主四个从就够了。

下面主要介绍数据库解决方案:

假设用户可以通过登录名、邮箱或手机号登录。

表格结构如下:

Login和ID表,按照login_hash
分为100个表复制代码如下:create table user _ log in(
log in _ namevarchar()用户登录,可以是登录名、邮箱或手机号
log in _ hash gint用户登录名的HASH代码
user_id BIGINT用户ID
];
像user_login一样创建表user _ log in 0;
像user_login一样创建表user _ log in 1;
……
像user_login一样创建表user _ login100
ID和用户信息表,按照user_id分为100个表。

create table user _ info(
user _ ID bigint用户ID
login_pwd CHAR()用户登录密码
...其他信息,家庭住址,手机号码,性别等。[/br]

像user_info一样创建表user _ info 0;
像user_info一样创建表user _ info 1;
……
像user_info一样创建表user _ info 2;
业务实现逻辑:

依赖服务器:实现一个自增ID服务(相当于oracle的序列),也可以自己实现(用PHP+MySQL或者C)。目的是从这个服务中获取ID,你每次获取的ID数是在上一次的基础上+1,和MySQL的autoincrement很像,但是你不能在表内增加。

注册流程:

1)验证用户名、邮箱、手机号、密码等格式。省略...

2)从服务中获取一个ID,假设它是115。

3)如果用户的登录类型是email(如$loginName='songhuan@zixue.it '),则在登录名前加上登录名结果的前缀(如$ log in name = ' mail _ songhuan @ zixue . it ')。

4)找到登录名的哈希值:$ log in HASH = MD5($ loginName);对于md5值hash,可以找asc代码,或者用自己的算法最终得到$loginHash=16位或者32位整数。

5) $ tablename =' user_login '。($ login hash% 100),如果得到user _ login的表名,如果结果是user_login88。

$ tablename =' user_info '。(115% 100),如果获得了user _ info表名。

6)执行SQL:
复制代码如下:插入到user _ login 88 (login _ name,login _ hash,user _ id)值(' songhuan @ zixue.it ',183239324323,1);
INSERT INTO user _ info 15(user _ id,login_pwd)值(115,' afieffeifeladifadfafe ');
登录流程:

1)如果用户的登录类型是电子邮件(例如,$loginName='songhuan@zixue.it '),则在登录名之前加上登录名结果的前缀(例如,$ loginName = ' mail _ songhuan @ zixue . it ')。

2)复制代码如下:$ log in hash = ord(MD5($ loginName));

3)复制代码如下:$ tablename =' user _ login '。($登录哈希% 100);如果结果是用户登录88

4)执行SQL:复制代码如下:select ID from user _ login 88其中login _ hash = $ login hash

如果找不到数据,则登录名不存在。

5)如果可以得到id=115,复制代码如下:$ tablename =' user _ info '。(115% 100);

SELECT id,pwd … FROM user_info15其中id = 115

6)匹配密码,如果密码不相等,则返回false。

7)如果密码相等,将用户ID加密到COOKIE中,并将用户信息存储到Memcache中。

希望这篇文章对你的php编程有所帮助。

http://www.bkjia.com/phpJC/934927.html www . bkjia . com true http://www . bkjia . com/phpJC/934927 . htmltecharitlephp+mysql大量的用户登录解决方案分析,以MySQL用户登录为例进行分析。分享给大家,供大家参考。具体分析如下:...

adminjs.cn是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 Adminjs.cn还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 在Adminjs.cn中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!