Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.background.everyMinute
<<Changes:
<<1/16/10; 10:20:25 AM by DW
<<Comment code that checks if it's a trial version that expired.
<<8/30/06; 12:12:34 PM by DW
<<Put all references to subtaskinfo inside try's.
<<Not sure what this was supposed to do, but without the try's they make the script fail, every time it's called.
<<3/4/03; 3:20:27 PM by JES
<<Call mainResponder.init once a minute -- at this time on a 500MHz G3 its average execution time is 0.027 seconds on an idle machine -- certainly worth the tradeoff for simplicity in dependent code.
<<8/1/02; 7:23:44 PM by JES
<<If the search engine is enabled, and this is the minute to index, kick off the index in its own thread.
<<12/26/99 ;7:12:46 PM by PBS
<<Bug fix: save all open databases that have been modified, not just databases listed in user.databases and mainResponder-specific databases. If the new verb table.visitOpenDatabases exists, call that instead of mainResponder.visitDatabases.
mainResponder.init ();
<<bundle //trial
<<if defined (userland.trialVersionCheck)
<<userland.trialVersionCheck ()
bundle { //possibly kick off a search engine index
if config.mainResponder.prefs.flSearchEngine {
if number (double (clock.now ()) / 60) % config.mainResponder.search.prefs.minutesBetweenIndexes == 0 {
thread.easyCall (@mainResponder.search.server.indexStoredPages, {})}}};
if config.mainResponder.prefs.flBuildPagesInBackground {
if defined (system.temp.mainResponder.backgroundPagesToBuild) {
local (i, adrItem, adrPage, ct = sizeOf (system.temp.mainResponder.backgroundPagesToBuild), pageList = {});
for i = ct downTo 1 {
adrItem = @system.temp.mainresponder.backgroundPagesToBuild [i];
adrPage = adrItem^;
delete (adrItem); //html.commands.releaseRenderedPage could take more than a minute!
if not (pageList contains adrPage) { //don't render it twice
try { //could time out
local (t); new (tableType, @t);
html.buildOnePage (adrPage, @t);
try {subtaskInfo.["builtPage" + i] = adrPage};
<<frontier.bringtofront ()
pageList = pageList + {adrPage}}}};
html.deletePageTableAddress ()}}; //8/22/99; 10:58:08 AM by DW
try {subtaskInfo.ctDatabasesSaved = 0};
if config.mainResponder.prefs.flSaveDatabasesEveryMinute { //save all open guest databases
local (day, month, year, hour, minute, second);
date.get (clock.now (), @day, @month, @year, @hour, @minute, @second);
if mod (minute, 2) == 0 {
local (ctSaved = 0);
on visit (f) {
if window.isModified (f) { //Fri, 30 Apr 1999 20:41:05 GMT by AR
msg ("mainResponder.background.everyMinute: Saving " + file.fileFromPath (f) + "...");
local (origTicks = clock.ticks ());
fileMenu.save (f);
local (ticksToSave = clock.ticks () - origTicks);
local (secsToSave = ticksToSave / 60);
local (saveString = file.fileFromPath (f) + " took " + secsToSave);
if secsToSave == 1 {
saveString = saveString + " second"}
else {
saveString = saveString + " seconds"};
saveString = saveString + " to save; ";
msg (saveString + Frontier.countThreads () + " threads; Pausing...");
thread.sleepFor (3);
<<msg ("mainResponder.background.everyMinute: Saved " + file.fileFromPath (f) + ".")
ctSaved++};
return (true)};
local (adrVisitScript = @mainResponder.visitDatabases);
if defined (table.visitOpenDatabases) { //PBS 12/26/99: use the newer visit script if it exists.
adrVisitScript = @table.visitOpenDatabases};
adrVisitScript^ (@visit);
try {subtaskInfo.ctDatabasesSaved = ctSaved};
msg ("")}};
if config.mainResponder.prefs.flLogMemavail { //2/23/99; 5:59:57 AM by DW
local (adrTable = log.addToGuestDatabase ("memavail", flHourlyRoll:false));
adrTable^.memAvail = string.megabyteString (sys.memAvail ());
try {subtaskInfo.memAvail = adrTable^.memAvail}}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.