From: skodak Date: Sun, 4 Mar 2007 22:52:33 +0000 (+0000) Subject: fomrat_string() tuning - memory, speed and accuracy in cron X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=38701b6910595d488f3ec4a56cd7069bdc66d795;p=moodle.git fomrat_string() tuning - memory, speed and accuracy in cron --- diff --git a/lib/weblib.php b/lib/weblib.php index c9bc82a08b..022004645e 100644 --- a/lib/weblib.php +++ b/lib/weblib.php @@ -1410,25 +1410,30 @@ function format_title($string, $plaintext=true, $courseid=null) { function format_string ($string, $striplinks = false, $courseid=NULL ) { global $CFG, $COURSE; - - // First replace all ampersands not followed html entity code - $string = preg_replace("/\&(?![a-z0-9]{1,8};)/", "&", $string); - + //We'll use a in-memory cache here to speed up repeated strings static $strcache = false; - if ($strcache === false) { + if ($strcache === false or count($strcache) > 2000 ) { // this number might need some tuning to limit memory usage in cron $strcache = array(); } + //init course id + if ($courseid === NULL) { + $courseid = $COURSE->id; + } + //Calculate md5 - $md5 = md5($string.'<+>'.$striplinks.'<+>'.$courseid); + $md5 = md5($string.'<+>'.$striplinks.'<+>'.$courseid.'<+>'.current_language()); //Fetch from cache if possible - if(isset($strcache[$md5])) { + if (isset($strcache[$md5])) { return $strcache[$md5]; } + // First replace all ampersands not followed html entity code + $string = preg_replace("/\&(?![a-z0-9]{1,8};)/", "&", $string); + if (!empty($CFG->filterall)) { $string = filter_text($string, $courseid); }