WordPress可以处理多少用户?

时间:2013-04-04 作者:prasad

我想在WP中设计一个成员登录站点,但我怀疑WordPress是否可以在同一个数据库中处理40000多个用户?

我对此不确定,所以我把工作放在这里。因此,请帮助我,如果有人确切地知道这一点,以继续我的项目与WP。

5 个回复
SO网友:Overdose

根据WP数据库结构,WP\\U用户中的ID是Bigint(20)UNSIGNED,因此“理论上”可以添加18446744073709551615个用户。http://dev.mysql.com/doc/refman/4.1/en/integer-types.html

SO网友:unity100

回答这个问题有点晚,但由于它即将用于相关搜索,这将对某些人有用:

WordPress使用EAV数据库模式作为其数据库实现的一部分。这会影响数据和用户。(它们放在单独的表格中)

从数据角度解释:

除了可直接访问的wp\\U帖子中的帖子相关详细信息外,每个帖子都会在wp\\U Posteta表中发布大量元数据。与职位(或自定义职位类型)相关的任何数据。

问题是,如果您有大量的帖子或页面(或自定义帖子/数据),那么搜索meta中的任何属性都会变得非常慢。您首先在元表中搜索所有条目以获得所需的条件,然后从表中获取相关帖子。关键是您需要分别搜索每个条件。因此,一次搜索标记,就可以得到“meta1”的值为X的帖子,然后搜索第二个条件,比如customcriteria,并在customcriteria中获得customcriteriavalue1的帖子ID,然后取这些内容的交集,然后从posts表中获取该交集的帖子详细信息。

例如,将30000个产品放入WooCommerce中,您将在wp\\U Posteta中得到约1800000行,如下面的回答所述:

Post meta vs separate database tables

因此,这不仅会使搜索效率非常低(尤其是当您在wp\\U Posteta上对多个条件进行自连接时),而且即使查询180万行中的一行也会导致性能下降。

EAV架构缺陷。

因此,对于大量帖子,WordPress db实现使得复杂的搜索速度非常慢。

如果您使用缓存插件,那么运行一个包含数千篇帖子的WordPress站点是完全可行的。你可以走得更远。但搜索将是一个问题。

。。。。。。。。。。。。

用户也一样-wp\\u usermeta也使用相同的EAV格式。因此,如果您有很多用户,并且有很多插件在wp\\u usermeta中存储各种用户数据,那么您将受到相同的性能影响。

更不用说有这么多用户,你可能已经有很多帖子了——除非你的应用程序主要与用户有关(CRM等),并且你选择将用户数据存储在wp\\u usermeta而不是wp\\u postmeta中。(尽管不太可能)。

。。。。。。。。。

有一些插件试图绕过这个问题,比如元加速器。

https://wordpress.org/plugins/meta-accelerator/

这个插件为您选择的任何给定帖子类型获取任何数据,并将它们放在平面表中。这大大加快了搜索速度,也加快了查询任何奇异值的速度。

但这个插件还处于起步阶段。

或者,您可以在服务器中安装ElasticSearch,并使用ElasticPress插件或其他将其集成到WordPress的插件来加速此类搜索。

SO网友:Kee Ross

我认为你可以运行更多的用户。唯一可以限制您的是您的服务器。您必须适当地扩展它,尤其是MySQL服务器。例如wordpress.com 运行的用户甚至超过40000人,但他们使用功能强大的系统来提高稳定性,使用大量的负载平衡器等。

SO网友:Felix Eve

我发现限制Wordpress用户数量的瓶颈是用户管理页面上的PHP超时。

假设您的所有用户至少有一个角色,则他们有一个wp_capabilities 中的条目user_metadata 具有序列化角色数组的表。

admin页面显示了每种类型角色的用户数,因此它必须加载每个单独的wp\\U功能序列化数组,取消序列化,然后显示总数。

当我有300000个用户时,用户管理页面需要44秒来构建。

这意味着每个用户将页面加载时间增加0.00014666666秒。

假设您的PHP超时为60秒,那么将限制为大约400000个用户。

然而,我运行的是一台非常旧且速度很慢的服务器。更快的硬件将大大改善情况。

SO网友:amitMojumder

问题应该是php mysql堆栈可以处理多少用户,而不是WordPress,因为WP是基于这两种主要技术开发的。

话虽如此,若您可以使用高级服务器技术配置服务器,将WP托管在一个良好的托管服务器中,优化数据库负载和查询,那个么WP可以处理任意多的成员。

如果您在共享主机中安装wordpress,则会限制您的WP功能。另一方面,如果您可以从基于云的或专用的托管服务器管理自己运行的WP,那么您应该可以获得所需的结果。

Wordpress能够处理复杂的数据库采石场。你可以看看这个https://codex.wordpress.org/Installing_WordPress

还可以使用wordpess作为高级应用程序开发框架,使您的安装能够处理大型/复杂的数据库负载。

您还可以更改此系列:http://code.tutsplus.com/articles/using-wordpress-for-web-application-development-wp_user_query--wp-35015

希望这会有所帮助。谢谢

结束

相关推荐

如果USER_META下的字段使用GET_USERS()为空,则回显文本

使用get\\u users()我列出了用户及其信息。我在数据库中有一个自定义字段,people\\u lists\\u class。<?php $blogusers = get_users(\'role=contributor&orderby=display_name\'); foreach ($blogusers as $user) { echo \'<li class=\"person member