Monday, November 08, 2010 at 12:05 AM.

system.verbs.builtins.scheduler2.thread.script

<<Changes
	<<8/18/08; 11:09:57 AM by DW
		<<Status message displays only if user.scheduler2.prefs.flMessages is true.
	<<6/11/08; 8:50:33 AM by DW
		<<Status message now displays last URL accessed.
	<<5/29/08; 1:00:20 PM by DW
		<<Call inetd.isDaemonRunning in a try, it can error (Invalid stream) as we're starting up.
	<<5/25/08; 12:11:27 PM by DW
		<<Created.
loop {
	local (day, month, year, hour, minute, second, now = clock.now ());
	scheduler2.init ();
	user.scheduler2.stats.ctLoops++;
	<<user.scheduler2.stats.whenLastLoop = clock.now ()
	date.get (now, @day, @month, @year, @hour, @minute, @second);
	if second == 0 {
		local (adrscript);
		for adrscript in @user.scheduler2.everyMinute {
			thread.callscript (@scheduler2.subtaskRunner, {adrscript, "everyMinute"})};
		if minute == user.scheduler2.prefs.minuteToRunHourlyTasks {
			local (adrscript);
			for adrscript in @user.scheduler2.hourly {
				thread.callscript (@scheduler2.subtaskRunner, {adrscript, "hourly"})}};
		if hour == user.scheduler2.prefs.hourToRunOvernightTasks {
			if minute == 0 {
				for adrscript in @user.scheduler2.overnight {
					thread.callscript (@scheduler2.subtaskRunner, {adrscript, "overnight"})};
				local (adrscript)}}};
	bundle { //status message
		local (s = "scheduler2: " + date.timestring (now, true) + "; ");
		bundle { //add threads
			local (ctthreads = Frontier.countThreads ());
			if ctthreads == 1 {
				s = s + "1 thread"}
			else {
				s = s + ctthreads + " threads"}};
		bundle { //add hits if web server is turned on
			try {
				if inetd.isDaemonRunning (@user.inetd.config.http) { //web server is turned on
					s = s +"; " +  user.webserver.stats.hits + " hits";
					if defined (user.scheduler2.stats.webserver.lastUrl) { //6/11/08 by DW
						s = s + "; " + user.scheduler2.stats.webserver.lastUrl}}}};
		if user.scheduler2.prefs.flMessages { //8/18/08 by DW
			msg (s + ".")}};
	thread.sleepfor (1)}



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.