We now have a wrapper memcached support class to handle
initial connection setup, provide the common denominator
calls, plus getforfill() and friends.
The eaccelerator class now returns false to match memcached. The
downside of this is that we cannot store booleans as a false value
is indistinguishable from a false that indicates error or 'key not
found'.
Make pconnections optional - only use pconnect if $CFG->memcachedpconn is
set. In current versions of the memcache client in PECL (v2.0.1),
memcache_pconnect() is buggy and will segfault if reusing a pconnection
to a server that has gone away or restarted.
And hope for a more stable client library in PECL ;-)
$MCACHE is initially based on core API that is shared between memcached and
turckmmcache/eaccelerator. The core operations are add(), set() and delete()
This initial implementation uses the PECL-based PHP client. Would be trivial
to add support for a PHP-based client.
The $MCACHE facility can be used for DB cache, text filters cache, and possibly
for sessions.
- move from $CFG->enablerecordcache <count> to $CFG->rcache <type>
- if $CFG->rcache === 'internal' use the cache array
otherwise, attempt to use $MCACHE
- implement and use rcache_getforfill() to catch thundering herds
- the cache lifetime is hardcoded to 2s until we understand better the
possible race conditions against updates that are not happening via
update_record() / delete_record()
Abstracted Sam's initial work with $record_cache into a series of functions
that abstract things _just enough_ that we can use an internal
in-memory-array implementation or something that is shared across
processes, like memcached or the turckmmcache/eaccelerator caches.
Also
- added hit/miss stats tracking and reporting
- removed max entries limiting as it was buggy - var names mismatches
and not counting unset()s
On 64-bit platforms the in-memory footprint of our libraries is quite a bit
larger than usual, and we hit the 8MB default memory limit before we call
raise_memory_limit(). This patch moves raise_memory_limit() and
get_realsize() to setuplib so we can call them earlier, and moves the
call to _before_ we include the libraries.
On AMD64, for MOODLE_17_STABLE the footprint is about 9.5MB. Diet time? :-)
This commit does two things:
1. Gives question types he opion to use formslib for their editing forms, instead of the old mechanism.
2. Converts the truefalse question type to formslib.