MDL-24751 fixed default memory limit when deciding to use apache_child_terminate...
authorPetr Skoda <skodak@moodle.org>
Tue, 19 Oct 2010 10:00:29 +0000 (10:00 +0000)
committerPetr Skoda <skodak@moodle.org>
Tue, 19 Oct 2010 10:00:29 +0000 (10:00 +0000)
admin/uploadpicture.php
admin/uploaduser.php
grade/import/csv/index.php
grade/import/xml/import.php
grade/import/xml/index.php
lib/cronlib.php
lib/moodlelib.php
lib/setup.php
mod/data/import.php

index e7f2ed0..c57e136 100644 (file)
@@ -68,10 +68,7 @@ if ($formdata = $mform->get_data()) {
         // that we'll take longer, and that the process should be recycled soon
         // to free up memory.
         @set_time_limit(0);
-        @raise_memory_limit("192M");
-        if (function_exists('apache_child_terminate')) {
-            @apache_child_terminate();
-        }
+        raise_memory_limit(MEMORY_EXTRA);
 
         // Create a unique temporary directory, to process the zip file
         // contents.
index 0c7bdf2..e187681 100755 (executable)
@@ -25,13 +25,7 @@ $choices = array(UU_ADDNEW    => get_string('uuoptype_addnew', 'admin'),
                  UU_UPDATE     => get_string('uuoptype_update', 'admin'));
 
 @set_time_limit(3600); // 1 hour should be enough
-@raise_memory_limit('256M');
-if (function_exists('apache_child_terminate')) {
-    // if we are running from Apache, give httpd a hint that
-    // it can recycle the process after it's done. Apache's
-    // memory management is truly awful but we can help it.
-    @apache_child_terminate();
-}
+raise_memory_limit(MEMORY_EXTRA);
 
 require_login();
 admin_externalpage_setup('uploadusers');
index 56b27b9..69d147d 100755 (executable)
@@ -101,9 +101,6 @@ if ($formdata = $mform->get_data()) {
     // to free up memory.
     @set_time_limit(0);
     @raise_memory_limit("192M");
-    if (function_exists('apache_child_terminate')) {
-        @apache_child_terminate();
-    }
 
     // use current (non-conflicting) time stamp
     $importcode = get_new_importcode();
@@ -209,9 +206,6 @@ if ($formdata = $mform->get_data()) {
     // to free up memory.
     @set_time_limit(0);
     @raise_memory_limit("192M");
-    if (function_exists('apache_child_terminate')) {
-        @apache_child_terminate();
-    }
 
     // we only operate if file is readable
     if ($fp = fopen($filename, "r")) {
index 4e3913e..baf7510 100644 (file)
@@ -45,9 +45,6 @@ require_capability('gradeimport/xml:view', $context);
 // to free up memory.
 @set_time_limit(0);
 @raise_memory_limit("256M");
-if (function_exists('apache_child_terminate')) {
-    @apache_child_terminate();
-}
 
 $text = download_file_content($url);
 if ($text === false) {
index ea71a9d..efa2f2a 100755 (executable)
@@ -49,9 +49,6 @@ if ($data = $mform->get_data()) {
     // to free up memory.
     @set_time_limit(0);
     @raise_memory_limit("256M");
-    if (function_exists('apache_child_terminate')) {
-        @apache_child_terminate();
-    }
 
     if ($text = $mform->get_file_content('userfile')) {
         print_grade_page_head($COURSE->id, 'import', 'xml', get_string('importxml', 'grades'));
index ceacba3..76b6e61 100644 (file)
@@ -334,12 +334,6 @@ function cron_run() {
         //Perhaps a long time and memory could help in large sites
         @set_time_limit(0);
         @raise_memory_limit("192M");
-        if (function_exists('apache_child_terminate')) {
-            // if we are running from Apache, give httpd a hint that
-            // it can recycle the process after it's done. Apache's
-            // memory management is truly awful but we can help it.
-            @apache_child_terminate();
-        }
         if (file_exists("$CFG->dirroot/backup/backup_scheduled.php") and
             file_exists("$CFG->dirroot/backup/backuplib.php") and
             file_exists("$CFG->dirroot/backup/lib.php") and
index 3b007e6..8bbd6fc 100644 (file)
@@ -8847,29 +8847,28 @@ function fullclone($thing) {
  * 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.
  * @return void
  */
 function moodle_request_shutdown() {
     global $CFG;
 
     // help apache server if possible
-    if (function_exists('apache_child_terminate')
-        && function_exists('memory_get_usage')
-        && ini_get_bool('child_terminate')) {
-        if (empty($CFG->apachemaxmem)) {
-            $CFG->apachemaxmem = 64*1024; // default 64MB
-        }
-        if (memory_get_usage() > (int)$CFG->apachemaxmem) {
-            trigger_error('Mem usage over $CFG->apachemaxmem: marking child for reaping.');
+    $apachereleasemem = false;
+    if (function_exists('apache_child_terminate') && function_exists('memory_get_usage')
+            && ini_get_bool('child_terminate')) {
+
+        $limit = (empty($CFG->apachemaxmem) ? 64*1024*1024 : $CFG->apachemaxmem); //64MB default
+        if (memory_get_usage() > get_real_size($limit)) {
+            $apachereleasemem = $limit;
             @apache_child_terminate();
         }
     }
 
     // deal with perf logging
     if (defined('MDL_PERF') || (!empty($CFG->perfdebug) and $CFG->perfdebug > 7)) {
+        if ($apachereleasemem) {
+            error_log('Mem usage over '.$apachereleasemem.': marking Apache child for reaping.');
+        }
         if (defined('MDL_PERFTOLOG')) {
             $perf = get_performance_info();
             error_log("PERF: " . $perf['txt']);
index cdd0ef5..5fd1c13 100644 (file)
@@ -448,7 +448,7 @@ if (function_exists('gc_enable')) {
     gc_enable();
 }
 
-// For now, only needed under apache (and probably unstable in other contexts)
+// Register default shutdown tasks - such as Apache memory release helper, perf logging, etc.
 if (function_exists('register_shutdown_function')) {
     register_shutdown_function('moodle_request_shutdown');
 }
index d93284b..8352780 100755 (executable)
@@ -108,9 +108,6 @@ if (!$formdata = $form->get_data()) {
     // to free up memory.
     @set_time_limit(0);
     @raise_memory_limit("96M");
-    if (function_exists('apache_child_terminate')) {
-        @apache_child_terminate();
-    }
 
     $iid = csv_import_reader::get_new_iid('moddata');
     $cir = new csv_import_reader($iid, 'moddata');