From 8b7f26b62c9e6e39dedf919d5207bb66ff00252d Mon Sep 17 00:00:00 2001 From: Ryan Boren Date: Mon, 21 Dec 2009 08:47:34 +0000 Subject: [PATCH] Improve do_action performance. Make an associative array. Props koopersmith. fixes #10561 git-svn-id: https://develop.svn.wordpress.org/trunk@12464 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-includes/plugin.php | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/wp-includes/plugin.php b/wp-includes/plugin.php index 29134ac47d..cf92494d18 100644 --- a/wp-includes/plugin.php +++ b/wp-includes/plugin.php @@ -299,10 +299,13 @@ function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) function do_action($tag, $arg = '') { global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter; - if ( is_array($wp_actions) ) - $wp_actions[] = $tag; + if ( ! isset($wp_actions) ) + $wp_actions = array(); + + if ( ! isset($wp_actions[$tag]) ) + $wp_actions[$tag] = 1; else - $wp_actions = array($tag); + ++$wp_actions[$tag]; $wp_current_filter[] = $tag; @@ -357,10 +360,10 @@ function do_action($tag, $arg = '') { function did_action($tag) { global $wp_actions; - if ( empty($wp_actions) ) + if ( ! isset( $wp_actions ) || ! isset( $wp_actions[$tag] ) ) return 0; - return count(array_keys($wp_actions, $tag)); + return $wp_actions[$tag]; } /** @@ -382,10 +385,13 @@ function did_action($tag) { function do_action_ref_array($tag, $args) { global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter; - if ( !is_array($wp_actions) ) - $wp_actions = array($tag); + if ( ! isset($wp_actions) ) + $wp_actions = array(); + + if ( ! isset($wp_actions[$tag]) ) + $wp_actions[$tag] = 1; else - $wp_actions[] = $tag; + ++$wp_actions[$tag]; $wp_current_filter[] = $tag;