[horde] Sharing user information between hooks

Jens Wahnes wahnes at uni-koeln.de
Thu Oct 29 16:37:30 UTC 2015


On Mon, Oct 26 2015, at 15:01:38 +0000, Michael J Rubinsky wrote:

> Quoting Jens Wahnes <wahnes at uni-koeln.de>:
>> The reason to introduce code to write things into the session was to
>> save unnecessary LDAP requests that would otherwise have to be executed
>> in both Horde's hooks and IMP's hooks.  The bulk of LDAP requests we
>> see, however, seems to stem from the fact that a complete session is
>> set up (including hooks being run) whenever there is a request through
>> CalDAV or such.  And not only is a session created for the user
>> performing the CalDAV request, but also for all users that have granted
>> this user access to their calendars, plus all users that this user is
>> granting access to his or her calendars.  All in all, that's a lot of
>> sessions with lots of LDAP requests.  (Consider, for example, a group
>> of just 5 people granting calendar access to each other's personal
>> calendar.  Then you've got 5 LDAP requests per every CalDAV request.
>> If everyone within the group is accessing all 5 calendars via CalDAV,
>> that's 5*5*5 = 125 LDAP requests for just 5 people.)
>>
>> So I came to the idea to use memcache to cache the LDAP data, since we
>> make heavy use of memcache anyways.  I dug around the Horde API docs a
>> bit and came up with some code that looks like this (not exactly, but
>> close enough):
>>
>>
>> $memcache =  
>> $GLOBALS['injector']->getInstance('Horde_Core_Factory_HashTable')->create($GLOBALS['injector']);
>
> This should be: $GLOBALS['injector']->getInstance('Horde_HashTable');

Thank you for pointing this out.  It feels much better to have code
that interfaces with the rest of the system the way it is intended to
work. :)

However, even when using the "getInstance('Horde_HashTable')" code, the
old problem remains that the prefix for memcache keys
($conf['hashtable']['params']['prefix'] from conf.php) is not used. 
Not such a big problem since I can work around that, after all, but
still leaves me with a feeling I'm not calling the Horde code
correctly.  Can you shed some light on that?

> The Horde_Core_Factory_HashTable class is registered with the injector  
> as the factory to use to create the hash table driver. If interested,  
> this is done in Horde_Registry::__construct().

Unfortunately, I don't quite unterstand what you're trying to tell me. 
Should this give me a clue as to where to look for code that does the
prefix handling?  Or is it totally unrelated to that question?


Jens
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://lists.horde.org/archives/horde/attachments/20151029/6baa18c5/attachment.bin>


More information about the horde mailing list