[buddypress-trac] [BuddyPress Trac] #5328: Use of the WordPress HeartBeat API to check for newest activities and to let user load them

buddypress-trac noreply at wordpress.org
Sun Feb 16 18:55:26 UTC 2014

#5328: Use of the WordPress HeartBeat API to check for newest activities and to
let user load them
 Reporter:  imath                                |       Owner:  imath
     Type:  enhancement                          |      Status:  assigned
 Priority:  normal                               |   Milestone:  2.0
Component:  Activity                             |     Version:  1.9.1
 Severity:  normal                               |  Resolution:
 Keywords:  has-patch 2nd-opinion needs-testing  |

Comment (by DJPaul):


 * Please can the code tidy-up bits be removed from this patch (perhaps
 just commit that tidy-up now)? Specifically the ` if ( ! empty( $pid_sql )
 )` spacing changes.
 * The introduction of `bp_is_activity_directory()` as a new helper
 function should be in its own ticket which you could commit straightaway.
 It might also make sense to introduce similar functions for all core
 components that have a directory at the same time to provide a more
 consistent API, though those shouldn't be a reason to hold up your work on
 this feature.
 * The changes to `get_last_updated()` should definitely be committed
 separately from the introduction of any heartbeat functionality. Since
 this introduces new direct SQL calls, this could also use unit tests to
 help prevent us accidentally breaking this in the future.
  * Have you EXPLAIN'd those queries to check we are hitting indexes, etc.
  * Do we not have a core function that already builds a query that does
 this for us, or is it more optimal to do this directly?
  * We should definitely object cache anything that we're proposing to hit
 every X seconds to avoid a bunch of database queries.
 * Changing the heartbeat interval with `heartbeat_settings` will affect
 any heartbeat request, not just ones from BuddyPress. There are very few
 plugins that do front-end heartbeats, but it's worth keeping in mind.
  * I think we load `bp-activity-filters.php` inside `wp-admin`, and I
 think our function here will affect the heartbeat in the various wp-admin
 * A level of indentation can be removed from
 `bp_activity_heartbeat_last_recorded()` if we bail out at the top of the
 function, if the request doesn't contain any BP data.

 * We should namespace the JS event handlers in case other plugins choose
 to remove them via JS in the future. It's pretty easy to do: change e.g.
 `on( 'heartbeat-send', ... )` to `on( 'heartbeat-send.buddypress', ... )`.
 * In the `heartbeat-tick` JS handler, we don't do anything if the request
 doesn't contain `data['last_id_recorded']`. I think we should prefix that
 key in case another plugin implements heartbeat using that same ID. e.g.
 something like `bp_activity_last_id_recorded`.
 * Some minor indentation issues.
 * If the browser/tab is in the background or out of focus, we should not
 send any heartbeat requests to save data usage. I am not sure if this kind
 of enhancement has been added to WP Core since I last looked at the
 heartbeat code, but it's not too hard to implement manually.

 IMO if we are introducing a new feature, it should be on by default if its
 component is on. I implemented front-end heartbeat in another plugin and
 user feedback was that I needed to speed up the heartbeats -- people
 weren't on pages for longer than 15 seconds (or whatever the default ping
 period is) so never saw the effects, and no-one yet has complained that
 their crappy webhost can't handle extra requests. Something to keep in

Ticket URL: <https://buddypress.trac.wordpress.org/ticket/5328#comment:10>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac

More information about the buddypress-trac mailing list