Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
05/18/2022 05:32:26 AM (2 years ago)
Author:
imath
Message:

Improve group members count query performance

[13103] introduced a change in 10.0.0 that can be very time consuming when a group has a lot of members.

To keep the main improvements of the referenced commit (only refreshing group members count when a user joins or leaves a group) but optimize queries performance, we are introducing a new way to count group members in the BP_Group_Member_Query.

We are also introducing a way to defer group members count when adding a batch of members to a group. Using bp_groups_defer_group_members_count() avoids to refresh the count each time a member of this batch is added. For more information about how to use this function, you can have a look at how BuddyPress is using it into src/bp-groups/bp-groups-admin.php.

Props dd32, espellcaste

See #8688 (trunk)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-groups/bp-groups-admin.php

    r13193 r13280  
    355355
    356356        if ( ! empty( $user_names ) ) {
     357            $new_members = count( $user_names );
     358
     359            if ( 1 < $new_members ) {
     360                bp_groups_defer_group_members_count( true );
     361            }
    357362
    358363            foreach( array_values( $user_names ) as $user_name ) {
     
    372377                    }
    373378                }
     379            }
     380
     381            if ( 1 < $new_members ) {
     382                bp_groups_defer_group_members_count( false, $group_id );
    374383            }
    375384        }
Note: See TracChangeset for help on using the changeset viewer.