Commit Graph

24 Commits

Author SHA1 Message Date
Ralf Becker
7cf6500f92 docu update 2013-10-02 10:33:44 +00:00
Ralf Becker
b6319b43cf * API: allow to set a maximum caching time used instead of unlimited caching or a bigger time, eg. in header.inc.php: egw_caching::$max_expiration = 864000; // 10days 2013-06-10 09:55:22 +00:00
Ralf Becker
b514745d01 * Admin: new function "Clear cache and register hooks", also called automatic when restoring a backup 2012-10-31 13:56:40 +00:00
Ralf Becker
d28f83d70e disable permanent error-log and tests 2012-10-30 12:25:10 +00:00
Ralf Becker
71cebbf12e allow to query cache for multiple locations at once: $location param to getCache is an array and returned is an array indexed by these locations (not found entries are NOT returned 2012-10-30 10:02:37 +00:00
Ralf Becker
a6190a6933 * API: only cache in APC by default, if it has at least 64M of shared memory, otherwise use filesystem 2012-10-23 07:49:21 +00:00
Ralf Becker
f4724ee3d4 xcache caching provider 2012-07-12 13:18:22 +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
Ralf Becker
64c076c536 fixed exception stalling new installs 2011-11-10 10:09:37 +00:00
Ralf Becker
2ed73047df fixed serveral issues around cached config:
- changing config in setup did not update or unset the cache --> instance was NOT using it
- new installs failed, because cache was not configured
- cache command to not configured cache gave fatal error, now they throw a (catchable) exception
2011-09-13 09:25:25 +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
Ralf Becker
389486793d - config is now cached on instance level
- arrays in $GLOBALS[egw_info][server] are now automatically serialized and unserialized
- new static method to check if user is export-limit excepted
--> saves to query it on each request (for non-phpgwapi, which was already cached in the session)
2011-08-26 13:50:20 +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
6865fad5c7 New caching provider using APC's shared memory cache.
Used now by default, if function apc_fetch() exists and no
other caching provide is explicitly set in header.inc.php or egw_cache
class. 
It's probably quicker on virtual machines, as it uses memory and not the
filesystem.
2010-05-01 12:55:41 +00:00
Ralf Becker
b47b6ed7ff "expiration time was not passed to tree or instance level cache provider" 2010-04-03 09:33:48 +00:00
Ralf Becker
c28be373a6 fixed wrong default parameter for $callback_params, call_user_func_array requires an empty array and not null (gives a fatal error under php5.3) 2009-06-08 15:46:45 +00:00
Ralf Becker
3ec3c205ee created a rpm post script to automatic install or update EGroupware:
- cleaned up exceptions in cli code (no need to log, as it goes direct to the user)
- regarding small rpm redirect header (< 200 bytes) as no header
- fixed wrong detected vars for cli install (eg. webserver_url)
- fixed egw_cache to not stall if system_charset is not yet in db
2009-05-30 20:15:31 +00:00
Ralf Becker
132297a502 "add system-charset to keys of tree-wide cache, if not utf-8, as content depends on charset!" 2009-05-30 09:18:04 +00:00
Ralf Becker
7c8bd81149 "return a reference to the var in the session!" 2009-05-26 14:44:29 +00:00
Ralf Becker
7224022772 "fixed not working cache unset on instance level, if called within setup:
this causes new installed languages to NOT appear"
2009-04-28 13:27:18 +00:00
Ralf Becker
4245df1f29 "only check callback, if defined" 2009-04-23 09:48:03 +00:00
Ralf Becker
2d438c6dc5 Caching provider for memcached using PHP's memcache extension 2009-04-20 14:33:31 +00:00
Ralf Becker
bf036043b2 - making all methods of translation class static
- caching the phrases in new egw_cache on Tree level
--> a good speed improvment on my devel system
- also added a global function
check_load_extension($extension,$throw=false)
2009-04-20 11:59:39 +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