Changeset 11053
- Timestamp:
- 09/01/2016 03:27:05 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-core/bp-core-cache.php
r10950 r11053 263 263 return $cache; 264 264 } 265 266 /** 267 * Gets a value that has been cached using an incremented key. 268 * 269 * A utility function for use by query methods like BP_Activity_Activity::get(). 270 * 271 * @since 2.7.0 272 * @see bp_core_set_incremented_cache() 273 * 274 * @param string $key Unique key for the query. Usually a SQL string. 275 * @param string $group Cache group. Eg 'bp_activity'. 276 * @return array|bool False if no cached values are found, otherwise an array of IDs. 277 */ 278 function bp_core_get_incremented_cache( $key, $group ) { 279 $cache_key = bp_core_get_incremented_cache_key( $key, $group ); 280 return wp_cache_get( $cache_key, $group ); 281 } 282 283 /** 284 * Caches a value using an incremented key. 285 * 286 * An "incremented key" is a cache key that is hashed with a unique incrementor, 287 * allowing for bulk invalidation. 288 * 289 * Use this method when caching data that should be invalidated whenever any 290 * object of a given type is created, updated, or deleted. This usually means 291 * data related to object queries, which can only reliably cached until the 292 * underlying set of objects has been modified. See, eg, BP_Activity_Activity::get(). 293 * 294 * @since 2.7.0 295 * 296 * @param string $key Unique key for the query. Usually a SQL string. 297 * @param string $group Cache group. Eg 'bp_activity'. 298 * @param array $ids Array of IDs. 299 * @return bool 300 */ 301 function bp_core_set_incremented_cache( $key, $group, $ids ) { 302 $cache_key = bp_core_get_incremented_cache_key( $key, $group ); 303 return wp_cache_set( $cache_key, $ids, $group ); 304 } 305 306 /** 307 * Gets the key to be used when caching a value using an incremented cache key. 308 * 309 * The $key is hashed with a component-specific incrementor, which is used to 310 * invalidate multiple caches at once. 311 312 * @since 2.7.0 313 * 314 * @param string $key Unique key for the query. Usually a SQL string. 315 * @param string $group Cache group. Eg 'bp_activity'. 316 * @return string 317 */ 318 function bp_core_get_incremented_cache_key( $key, $group ) { 319 $incrementor = bp_core_get_incrementor( $group ); 320 $cache_key = md5( $key . $incrementor ); 321 return $cache_key; 322 } 323 324 /** 325 * Gets a group-specific cache incrementor. 326 * 327 * The incrementor is paired with query identifiers (like SQL strings) to 328 * create cache keys that can be invalidated en masse. 329 * 330 * If an incrementor does not yet exist for the given `$group`, one will 331 * be created. 332 * 333 * @since 2.7.0 334 * 335 * @param string $group Cache group. Eg 'bp_activity'. 336 * @return string 337 */ 338 function bp_core_get_incrementor( $group ) { 339 $incrementor = wp_cache_get( 'incrementor', $group ); 340 if ( ! $incrementor ) { 341 $incrementor = microtime(); 342 wp_cache_set( 'incrementor', $incrementor, $group ); 343 } 344 345 return $incrementor; 346 } 347 348 /** 349 * Reset a group-specific cache incrementor. 350 * 351 * Call this function when all incrementor-based caches associated with a given 352 * cache group should be invalidated. 353 * 354 * @since 2.7.0 355 * 356 * @param string $group Cache group. Eg 'bp_activity'. 357 * @return bool True on success, false on failure. 358 */ 359 function bp_core_reset_incrementor( $group ) { 360 wp_cache_delete( 'incrementor', $group ); 361 }
Note: See TracChangeset
for help on using the changeset viewer.