util_memoize tcl_statement { oldest_acceptable_value_in_seconds " " }What it does:
Returns the result of evaluating the Tcl statement argument and then remembers that value in a cache; the memory persists for the specified number of seconds (or until the server is restarted if the second argument is not supplied) or until someone calls util_memoize_flush with the same Tcl statement. Note that this procedure should be used with care because it calls the eval built-in procedure (and therefore an unscrupulous user couldDefined in: /web/philip/packages/acs-core/utilities-procs.tcl
Source code:
# we look up the statement in the cache to see if it has already # been eval'd. The statement itself is the key if { ![nsv_exists util_memoize_cache_value $tcl_statement] || ( ![empty_string_p $oldest_acceptable_value_in_seconds] && ([expr [nsv_get util_memoize_cache_timestamp $tcl_statement] + $oldest_acceptable_value_in_seconds] < [ns_time]) )} { # not in the cache already OR the caller spec'd an expiration # time and our cached value is too old set statement_value [eval $tcl_statement] nsv_set util_memoize_cache_value $tcl_statement $statement_value # store the time in seconds since 1970 nsv_set util_memoize_cache_timestamp $tcl_statement [ns_time] } return [nsv_get util_memoize_cache_value $tcl_statement]