lib/setup moodelib: Introducing moodle_request_shutdown()

Now Moodle will have a 'shutdown_function' function. Right now
registered (and useful) only when running under apache + mod_php.

This initial function checks whether memory usage in this process exceeded
10MiB or $CFG->apachemaxmem (int, in bytes). This is really useful to prevent
using more RAM than we have.
This commit is contained in:
martinlanghoff
2007-04-05 05:00:39 +00:00
parent c4269c100d
commit 89d6849793
2 changed files with 30 additions and 0 deletions
+25
View File
@@ -6477,6 +6477,31 @@ function fullclone($thing) {
}
/*
* This function expects to called during shutdown
* should be set via register_shutdown_function()
* in lib/setup.php .
*
* Right now we do it only if we are under apache, to
* make sure apache children that hog too much mem are
* killed.
*
*/
function moodle_request_shutdown() {
// initially, we are only ever called under apache
// but check just in case
if (function_exists('apache_child_terminate') && function_exists('memory_get_usage')) {
if (empty($CFG->apachemaxmem)) {
$CFG->apachemaxmem = 10000000; // default 10MiB
}
if (memory_get_usage() > (int)$CFG->apachemaxmem) {
trigger_error('Mem usage over $CFG->apachemaxmem: marking child for reaping.');
apache_child_terminate();
}
}
}
/**
* If new messages are waiting for the current user, then return
* Javascript code to create a popup window
+5
View File
@@ -224,6 +224,11 @@ global $HTTPSPAGEREQUIRED;
}
/// For now, only needed under apache (and probably unstable in other contexts)
if (function_exists('apache_child_terminate')) {
register_shutdown_function('moodle_request_shutdown');
}
//// Defining the site
if ($SITE = get_site()) {
/**