mirror of
https://github.com/moodle/moodle.git
synced 2025-04-16 14:02:32 +02:00
"MEMORY/MDL-18540,remove hard-coded php memory limit, added system setting for it, create a function reduce_memory_limit to reduce memroy limit and respect php.ini setting in the meanwhile, merged from 1.9"
This commit is contained in:
parent
add1a6da62
commit
7022dd3930
@ -363,7 +363,11 @@ class problem_000008 extends problem_base {
|
||||
}
|
||||
$oldmemlimit = get_real_size($oldmemlimit);
|
||||
//now lets change the memory limit to something unique below 128M==134217728
|
||||
@ini_set('memory_limit', 134217720);
|
||||
if (empty($CFG->memorylimit)) {
|
||||
raise_memory_limit('128M');
|
||||
} else {
|
||||
raise_memory_limit($CFG->memorylimit);
|
||||
}
|
||||
$testmemlimit = get_real_size(@ini_get('memory_limit'));
|
||||
//verify the change had any effect at all
|
||||
if ($oldmemlimit == $testmemlimit) {
|
||||
@ -374,7 +378,7 @@ class problem_000008 extends problem_base {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ini_set('memory_limit', $oldmemlimit);
|
||||
reduce_memory_limit($oldmemlimit);
|
||||
return false;
|
||||
}
|
||||
function severity() {
|
||||
|
@ -233,6 +233,14 @@ $ADMIN->add('server', new admin_externalpage('phpinfo', get_string('phpinfo'), "
|
||||
|
||||
// "performance" settingpage
|
||||
$temp = new admin_settingpage('performance', get_string('performance', 'admin'));
|
||||
|
||||
$temp->add(new admin_setting_special_selectsetup('memorylimit', get_string('memorylimit', 'admin'),
|
||||
get_string('configmemorylimit', 'admin'), '128M',
|
||||
array( '64M' => '64M',
|
||||
'128M' => '128M',
|
||||
'256M' => '256M',
|
||||
'1024M' => '1024M'
|
||||
)));
|
||||
$temp->add(new admin_setting_special_selectsetup('cachetype', get_string('cachetype', 'admin'),
|
||||
get_string('configcachetype', 'admin'), '',
|
||||
array( '' => get_string('none'),
|
||||
|
@ -547,9 +547,12 @@
|
||||
mtrace($debuginfo.'Required function check failed (see backup_required_functions)');
|
||||
return false;
|
||||
}
|
||||
|
||||
@ini_set("max_execution_time","3000");
|
||||
raise_memory_limit("192M");
|
||||
if (empty($CFG->memorylimit)) {
|
||||
raise_memory_limit('128M');
|
||||
} else {
|
||||
raise_memory_limit($CFG->memorylimit);
|
||||
}
|
||||
|
||||
if (!$backup_unique_code = restore_precheck($destinationcourse,$pathtofile,$errorstr,true)) {
|
||||
mtrace($debuginfo.'Failed restore_precheck (error was '.$errorstr.')');
|
||||
|
@ -141,7 +141,11 @@
|
||||
|
||||
//Adjust some php variables to the execution of this script
|
||||
@ini_set("max_execution_time","3000");
|
||||
raise_memory_limit("192M");
|
||||
if (empty($CFG->memorylimit)) {
|
||||
raise_memory_limit('128M');
|
||||
} else {
|
||||
raise_memory_limit($CFG->memorylimit);
|
||||
}
|
||||
|
||||
//Call the form, depending the step we are
|
||||
|
||||
|
@ -19,7 +19,11 @@
|
||||
|
||||
//Adjust some php variables to the execution of this script
|
||||
@ini_set("max_execution_time","3000");
|
||||
raise_memory_limit("192M");
|
||||
if (empty($CFG->memorylimit)) {
|
||||
raise_memory_limit('128M');
|
||||
} else {
|
||||
raise_memory_limit($CFG->memorylimit);
|
||||
}
|
||||
|
||||
echo "<pre>\n";
|
||||
|
||||
|
@ -184,6 +184,7 @@ $string['configmaxeditingtime'] = 'This specifies the amount of time people have
|
||||
$string['configmaxevents'] = 'Events to Lookahead';
|
||||
$string['configmemcachedhosts'] = 'For memcached. Comma-separated list of hosts that are running the memcached daemon. Use IP addresses to avoid DNS latency. memcached does not behave well if you add/remove hosts on a running setup.';
|
||||
$string['configmemcachedpconn'] = 'For memcached. Use persistent connections. Use carefully -- it can make Apache/PHP crash after a restart of the memcached daemon.';
|
||||
$string['configmemorylimit'] = 'This sets the maximum amount of memory that a script is allowed to allocate. This option is applied to search indexing, backup/restore and admin/health scripts.';
|
||||
$string['configmessaging'] = 'Should the messaging system between site users be enabled?';
|
||||
$string['configminpassworddigits'] = 'Passwords must have at least these many digits.';
|
||||
$string['configminpasswordlength'] = 'Passwords must be at least these many characters long.';
|
||||
@ -550,6 +551,7 @@ $string['mediapluginswfnote'] = 'As a default security measure, normal users sho
|
||||
$string['mediapluginwmv'] = 'Enable .wmv filter';
|
||||
$string['memcachedhosts'] = 'memcached hosts';
|
||||
$string['memcachedpconn'] = 'memcached use persistent connections';
|
||||
$string['memorylimit'] = 'PHP memory limit';
|
||||
$string['messaging'] = 'Enable messaging system';
|
||||
$string['minpasswordlength'] = 'Password Length';
|
||||
$string['minpassworddigits'] = 'Digits';
|
||||
|
@ -281,6 +281,42 @@ function raise_memory_limit($newlimit) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to reduce the memory limit to a new value.
|
||||
* Will respect the memory limit if it is lower, thus allowing
|
||||
* settings in php.ini, apache conf or command line switches
|
||||
* to override it
|
||||
*
|
||||
* The memory limit should be expressed with a string (eg:'64M')
|
||||
*
|
||||
* @param string $newlimit the new memory limit
|
||||
* @return bool
|
||||
*/
|
||||
function reduce_memory_limit ($newlimit) {
|
||||
if (empty($newlimit)) {
|
||||
return false;
|
||||
}
|
||||
$cur = @ini_get('memory_limit');
|
||||
if (empty($cur)) {
|
||||
// if php is compiled without --enable-memory-limits
|
||||
// apparently memory_limit is set to ''
|
||||
$cur=0;
|
||||
} else {
|
||||
if ($cur == -1){
|
||||
return true; // unlimited mem!
|
||||
}
|
||||
$cur = get_real_size($cur);
|
||||
}
|
||||
|
||||
$new = get_real_size($newlimit);
|
||||
// -1 is smaller, but it means unlimited
|
||||
if ($new < $cur && $new != -1) {
|
||||
ini_set('memory_limit', $newlimit);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts numbers like 10M into bytes.
|
||||
*
|
||||
|
@ -13,11 +13,12 @@
|
||||
*/
|
||||
|
||||
try{
|
||||
// overrides php limits
|
||||
$maxtimelimit = ini_get('max_execution_time');
|
||||
ini_set('max_execution_time', 600);
|
||||
$maxmemoryamount = ini_get('memory_limit');
|
||||
ini_set('memory_limit', '96M');
|
||||
ini_set('max_execution_time', 300);
|
||||
if (empty($CFG->memorylimit)) {
|
||||
raise_memory_limit('128M');
|
||||
} else {
|
||||
raise_memory_limit($CFG->memorylimit);
|
||||
}
|
||||
|
||||
mtrace("\n--DELETE----");
|
||||
require_once($CFG->dirroot.'/search/delete.php');
|
||||
@ -28,13 +29,9 @@ try{
|
||||
mtrace("------------");
|
||||
//mtrace("cron finished.</pre>");
|
||||
mtrace('done');
|
||||
|
||||
// set back normal values for php limits
|
||||
ini_set('max_execution_time', $maxtimelimit);
|
||||
ini_set('memory_limit', $maxmemoryamount);
|
||||
}
|
||||
catch(Exception $ex){
|
||||
mtrace('Fatal exception from Lucene subsystem. Search engine may not have been updated.');
|
||||
mtrace($ex);
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
Loading…
x
Reference in New Issue
Block a user