Commit Graph

54 Commits

Author SHA1 Message Date
Leon Stringer
36b6444420 MDL-64719 cache: Implement purge_current_user() in \cache
\cache::make() may return a cache_disabled subclass but callers, specifically
user/lib.php:user_create_user(), invoke \cache::purge_current_user() which was
only implemented by the cache_session subclass.  Added empty
\cache::purge_current_user() which subclasses can implement, i.e.
cache_session, or not, i.e. cache_disabled.
2019-04-01 15:29:39 +01:00
David Mudrák
0ea0dfde6d MDL-64452 cache: Always use the current session id in the key prefix
The current logic in the cache_session::check_tracked_user() is not
right. We must always set the current session id. A typical use case is
when the cache instance is instantiated for a not logged in user. We
can't let the sessionid property null in that case as it forms an
important part of the parsed key.

Similarly, even if we have the same user currently loaded, we must still
set the sessionid to make sure the data will be associated with the
current PHP session. Same user (including visitors or guest users) can
access the site from different browsers and each must end up with its
own key prefix.
2019-02-15 09:36:43 +01:00
Andrew Nicols
0a197875df MDL-63101 cache: Improve accuracy of cache event invalidation 2018-08-27 14:43:42 +08:00
Skylar Kelty
32ec2da151 MDL-58658 caching: Fix static acceleration for empty arrays 2017-04-20 09:49:09 +01:00
Russell Smith
f3789f2fb3 MDL-45584 cache: Make identifiers part of the cache creation.
It is now safe to cache a reference to a cache and expect consistent results.

Changing identifiers altered cache results where a reference was
held to the cache. Identifiers have been set to be cached with
identifiers included so the caches are separate.

As a consequence of this it was identified that invalidation events
and identifiers don't easily work together as an event can't determine
which identifiers should be used for cache invalidation.  So invalidation
events have been made incompatible with identifiers being set.  No core
code used this combination as it's not possible to understand any expected
behaviour.

Event invalidation for application and session caches was centralised to the same
location.  The only difference was the name of the lastinvalidation variable. This
improves support and consistency of invalidation code.
2017-03-02 11:06:17 +08:00
Jonathan Champ
d3a6b91aec MDL-57427 cache: Use perfdebug only when enabled 2017-01-09 10:18:13 -05:00
Russell Smith
ec4b83b92a MDL-55922 cache: Improve static cache performance
Static cache has a very flexible storage capability
and does not need all the checks performed on it.
Enabling dereferencing handling and multiple identifiers
removes a lot of unneeded overhead for request caches that
have many get calls.

The changes were modelled on the static acceleration changes
done in MDL-53208.
2016-09-12 11:58:55 +10:00
Russell Smith
7ff43e1acf MDL-55604 cache: Fix identifier and cacheable_object
When a cachable object is store in the static cache from
the backing store, it was incorrect serialised rather than
using the wake function.  This has been resolved and tests added.

During the investigation into cacheable_object, it was discovered
that set_identifiers never removes identifiers when you call it,
so set_identifiers(array('a')) and set_identifiers(array('b')) really
resulted in array('a','b') as the identifiers rather than 'b'.

The fix for this issue depends on the set_identifiers fix and
they have been coupled together as a result.
2016-08-24 11:26:20 +10:00
Jun Pataleta
329642b9c5 MDL-54984 cache: 3.2 final deprecations 2016-07-26 00:46:37 +08:00
Andrew Nicols
d96a4e2a59 MDL-53206 caching: Remove accidental use of fullresult variable 2016-02-29 13:20:29 +08:00
Russell Smith
fdff8077e0 MDL-53208 caching: Update serialization rules for performance.
- We only now serialize when required, eg when the store doesn't do it.
- static acceleration now serializes on set to reduce overhead on load.
- null now works in static acceleration as we use an array for storage metadata
- static acceleration delete uses isset rather than an array_search.
2016-02-28 17:01:51 +11:00
Russell Smith
76349f871e MDL-53208 caching: Remove TTL wrapper on static acceleration.
TTL is only updated between script runs.  If it's valid
when it's added to static acceleration, it will be valid
for the entire script run.
2016-02-28 17:01:50 +11:00
Russell Smith
98d580888b MDL-53208 caching: parse_key not required for static cache.
static cache operates on a single cache instance, it can't share
with others and can use the supplied key immediately.
2016-02-28 17:01:50 +11:00
Russell Smith
80788d03e1 MDL-53208 caching: Update serialization rules for performance.
- We only now serialize when required, eg when the store doesn't do it.
- static acceleration now serializes on set to reduce overhead on load.
- null now works in static acceleration as we use an array for storage metadata
- static acceleration delete uses isset rather than an array_search.
2016-02-28 17:01:50 +11:00
Russell Smith
5007975d1e MDL-53206 caching: Ensure get_many and set_many dereference objects. 2016-02-28 17:01:49 +11:00
Matt Petro
2351ed55e8 MDL-51482 caching: Fix unnecessary updates to lastinvalidation time 2015-10-08 11:48:17 -04:00
Sam Hemelryk
7fa57e0341 MDL-39459 cache: mode included in stats output
The cache store mode is now included in the performance stats
printed at the bottom of the page.
It is represented as either [a] [s] or [r] and a title is used
to actually state the mode.
2015-02-04 09:35:21 +13:00
Sam Hemelryk
83bee88119 MDL-47832 cache: removed data source aggregate functionality
Cache data source aggregate functionality was found to be broken
and unused, because of this the decision was made to remove it
rather than fix it.
As it was broken we did not follow typical deprecation methods and
instead the code was removed outright with only structure
remaining and left deprecated.
2014-11-20 11:02:56 +13:00
Tim Hunt
5bcfd504df MDL-45618 Fix @since PHPdoc tags. 2014-05-19 17:03:04 +01:00
Mark Nielsen
6cc9ac6cdb MDL-43734: Prevent purging of all user session cache 2014-01-16 11:22:28 -08:00
Sam Hemelryk
1e9f4c98e3 MDL-43033 cache: added stats logging to set_many methods 2013-12-02 09:30:04 +13:00
Sam Hemelryk
6dbe2df208 MDL-43033 cache: added stats logging to get_many methods 2013-12-02 09:30:03 +13:00
Sam Hemelryk
b51fed38f2 MDL-40903 cache: renamed loader method to reflect static accelerator 2013-09-25 09:05:18 +12:00
Sam Hemelryk
d074fb091d MDL-40903 cache: renamed persistcache to staticacceleration 2013-09-25 09:05:18 +12:00
Marina Glancy
d67a1a8815 MDL-40903 cache: Unittests and small fixes for persistent application cache 2013-09-25 09:04:36 +12:00
Sam Hemelryk
083fa87759 MDL-40903 cache: converted persistent into persistentdata
At the same time all cache instances were made persistent
2013-09-25 09:04:35 +12:00
Sam Hemelryk
85008bedd5 MDL-41106 cache: several fixes for the session cache.
This issue makes several fixes for the session loader and the session store.
 * maxsize argument now works for session caches.
 * fixed performance hole when interation occurs frequently.
 * fixed cache purge bug occuring when multiple caches are defined before being used.
 * improved lastaccess handling.

Big thanks to Marina who contributed the following commits:
 * Always make sure the elements in cache are sorted so we need to remove only elements in the beginning of array
 * Remove expired elements from session store to free memory
 * Minor bug fixes
2013-08-26 09:15:57 +12:00
Damyon Wiese
5ebe37fb27 Revert "MDL-41106 cache: several fixes for the session cache."
This reverts commit 89182546a0.
This reverts commit 170b05362a.
This reverts commit 2e9d5a534e.
2013-08-19 15:32:08 +08:00
Sam Hemelryk
89182546a0 MDL-41106 cache: tidied up several elements 2013-08-19 11:32:08 +12:00
Sam Hemelryk
2e9d5a534e MDL-41106 cache: several fixes for the session cache.
This issue makes several fixes for the session loader and the session store.
* maxsize argument now works for session caches.
* fixed performance hole when interation occurs frequently.
* fixed cache purge bug occuring when multiple caches are defined before being used.
* improved lastaccess handling.
2013-08-16 11:27:55 +12:00
Sam Hemelryk
10aabcb221 MDL-39062 cache: persist keys now set properly 2013-07-15 11:24:19 +12:00
sam marshall
8af5bb54d0 MDL-39472 MUC: Optimise cache::get_from_persist_cache 2013-05-08 10:16:28 +01:00
Sam Hemelryk
5cba0c4ba3 MDL-38565 cache: tidy up pre-integration 2013-04-19 10:13:36 +12:00
Sam Hemelryk
4da28110c0 MDL-38565 cache: improve stats gathering 2013-04-19 10:12:59 +12:00
Sam Hemelryk
dbd2ea4e1f MDL-38565 cache: session caches now function as expected
This change is a large change to the way sessions are handled
within MUC after it was discovered that session did not function
as expected when any store other than the default session store
was being used.
As part of this change the session loader has been largely
customised in order to consolidate session data for the loader.
The unit tests have also being greatly increased to provide
better coverage for sessions.
2013-04-19 10:11:48 +12:00
Sam Hemelryk
35b2d0db5e MDL-38303 cache: fixed purging of session cache when switching users 2013-03-10 11:31:26 +13:00
Sam Hemelryk
43394c5114 MDL-38165 cache: fixed up application event purging 2013-03-01 10:10:30 +13:00
Sam Hemelryk
b6c86be197 MDL-38165 cache: fixed up session event purging 2013-03-01 10:10:30 +13:00
Sam Hemelryk
3aee2fb8ee MDL-36363 cache: fixed issue with double parsing keys for stacked loaders 2013-01-31 09:10:57 +13:00
Sam Hemelryk
9966db51f0 MDL-37263 cache: fixed event invalidation coding error 2012-12-21 10:50:07 +13:00
Sam Hemelryk
75cde6b9ac MDL-36768 cache: replaced cache_store interface with abstract class 2012-11-26 14:11:01 +13:00
Dan Poltawski
aeb8e78785 Merge branch 'wip-MDL-36407-m24' of git://github.com/samhemelryk/moodle 2012-11-16 15:04:17 +08:00
Sam Hemelryk
5dd68a7523 MDL-36407 cache: unit tests + checks + improved string cache 2012-11-16 09:46:49 +13:00
Sam Hemelryk
758dbdf894 MDL-36111 cache: Fixed up typo's and trivial issues 2012-11-12 10:36:53 +13:00
Sam Hemelryk
2566210c63 MDL-36407 cache: Implemented options for ad_hoc caches 2012-11-12 10:05:05 +13:00
Sam Hemelryk
47834bcd41 MDL-36120 cache: now uses sha1 and has an option for simple keys 2012-11-07 10:03:32 +13:00
Sam Hemelryk
2e1e266c9a MDL-36362 cache: added simpledata definition option 2012-11-05 10:28:07 +13:00
Sam Hemelryk
d4797177b5 MDL-36047 cache: Fixed up issues with PHP 5.3.2 and 5.3.7 2012-10-15 12:35:23 +08:00
Sam Hemelryk
267ebe02b3 MDL-25290 cache: Fixed issues with references when getting, and added unit tests to cover 2012-10-08 09:53:53 +13:00
Sam Hemelryk
8dbfbd71c9 MDL-25290 cache: Fixed up handling of objects by cache loader 2012-10-08 09:53:52 +13:00