Hello, I have a module wich implements hook_user.
I noticed that my hook was invoked many times with the 'load' option... so I made a trace to see where did these calls come from, and this is the result:

menu_get_item [menu.inc] (ln 343)
   menu_translate (ln 316)
     _menu_load_objects (ln 566)
        *callback* user_uid_optional_load
      <b>user_load</b>
        user_module_invoke('load')
              myhook_user
  user_view
    user_build_content
      user_module_invoke('view')
        myhook_user
print theme('page', $return); [index.php] (ln 36)
  theme('blocks', 'left')
    theme('block', 'left')
      module_invoke('user_block', 'view')
        menu_tree('navigation')
          menu_tree_check_access  // Check access for the current user to each item in the tree.
             _menu_link_translate
              _menu_load_objects
                *callback* user_uid_optional_load
                  <b>user_load</b>
                     user_module_invoke('load')
                        myhook_user
  template_preprocess_page
    theme('help')
      ctools_menu_help
        ctools_menu_get_active_help
           ctools_menu_tab_root_path
             ctools_menu_local_tasks
              _menu_translate
                _menu_load_objects
                   <b>user_load</b>
                      user_module_invoke('load')
                         myhook_user
              _menu_translate
                _menu_load_objects
                   <b>user_load</b>
                      user_module_invoke('load')
                         myhook_user
              _menu_translate
                _menu_load_objects
                   <b>user_load</b>
                      user_module_invoke('load')
                         myhook_user
              [...] about 20 more times

Seems that ctools is calling menu_translate multiple times, one for each menu item, and each call one calling user_load ...
Is that call really necessary ?

Comments

merlinofchaos’s picture

Priority: Critical » Normal
Status: Needs review » Active

1) Not critical. C'mon.
2) "Needs review" means there is a patch attached.
3) It should be doing almost exactly the same thing that core is doing, it's basically just a copy of core code with a couple of extra features to make some things possible. So I think you'd be getting this even with ctools not in the picture.

savioret’s picture

Do you mean that it is not a performance problem anyway ? o_O
So, do you think the problem is "originated" by ctools? or by drupal core?

merlinofchaos’s picture

I mean if you were to go in and remove the bit in CTools that adds its own menu item to theme help and otherwise left everything the same, you would see the same problems. I'm not saying it isn't a performance issue, but that core's menu system, particularly where tabs are involved, is known to be a little overzealous.

merlinofchaos’s picture

Status: Active » Closed (works as designed)

Marking by design unless core makes a change that I need to change along with.