Commit Graph

12 Commits

Author SHA1 Message Date
Ralf Becker
ca9aa01250 new egw_cache::addCache method which fails if key already exists in cache, allowing eg. to implement a mutex 2015-09-07 13:04:35 +00:00
Ralf Becker
5e40c8748d fix IDE warnings 2015-04-27 08:31:49 +00:00
Ralf Becker
bec89939c7 fix not working clearing of cache for files backend 2015-01-29 13:55:40 +00:00
Ralf Becker
6f98614b15 * Setup: fixed (partially) stalled installation, because caching could not find not yet created configuration 2014-05-05 12:33:33 +00:00
Ralf Becker
8c4125e75c * Admin: new function "Clear cache and register hooks", also called automatic when restoring a backup 2012-10-31 14:00:34 +00:00
Ralf Becker
189d89be1b tests for egw_cache_provider and not using APC for cli, if apc.enable_cli is not set
Also did some benchmarking on my Macbook (with a SSD and memcached running on localhost):
Checking egw_cache_memcache:
0 checks failed, 100 iterations took 0.480 sec

Checking egw_cache_apc:
0 checks failed, 100 iterations took 0.025 sec

Checking egw_cache_files:
0 checks failed, 100 iterations took 0.826 sec
--> APC is by a factor of 20 faster then memcached, which is double as fast compared to files on a SSD
2012-04-13 10:21:58 +00:00
Klaus Leithoff
ac061f68f7 fix typo 2011-11-02 14:57:41 +00:00
Ralf Becker
ae5cde8259 fix bug reported on devel-list:
egw_cache::get_provider(Instance) no provider found (error instanciating provider egw_cache_files: egw_cache_files::__construct() server/temp_dir
--> made egw_cache::get_config_value public, so egw_cache_files can use it and for regular egw sessions read install_id and temp_dir together with system_charset, before calling config::read()
2011-08-29 05:58:54 +00:00
Andreas Stöckel
43e4fa2c3c Updated the thumbnail generator to use the egw_cache_file class to generate a temp filename 2011-02-21 18:37:45 +00:00
Ralf Becker
edea73521e "quitent some warnings about not writable dirs, eg. if calling cli programms with users not having permissions for the cache dir" 2009-05-02 12:33:28 +00:00
Ralf Becker
b6eda8e39b "replacing colons with dashes in filenames, as some windows installs seem to have problem with colons in filenames" 2009-04-29 16:08:13 +00:00
Ralf Becker
fd9856ebf5 Class to manage caching in eGroupware:
It allows to cache on 4 levels:
a) tree:     for all instances/domains runining on a certain source path
b) instance: for all sessions on a given instance
c) session:  for all requests of a session, same as egw_session::appsession()
d) request:  just for this request (same as using a static variable)

There's a get, a set and a unset method for each level: eg. getTree()
or setInstance(), as well as a variant allowing to specify the level as first
parameter: eg. unsetCache()

getXXX($app,$location,$callback=null,array $callback_params,$expiration=0)
has three optional parameters allowing to specify:
3. a callback if requested data is not yes stored. In that case the
   callback is called and it's value is stored in the cache AND retured
4. parameters to pass to the callback as array, see call_user_func_array
5. an expiration time in seconds to specify how long data should be cached,
   default 0 means infinit (this time is not garantied and not
   supported for all levels!)

Data is stored under an application name and a location, like
egw_session::appsession().
In fact data stored at cache level egw_cache::SESSION, is stored in
the same way as egw_session::appsession() so both methods can be used
with each other.

The $app parameter should be either the app or the class name, which
both are unique.

The tree and instance wide cache uses a certain provider class, to
store the data eg. in memcached or if there's nothing else configured
in the filesystem (eGW's temp_dir).
2009-04-20 11:50:45 +00:00