C. David Shaffer
cdshaffer at acm.org
Tue Mar 8 21:33:42 CET 2005
Daniel Salama wrote:
> Hello again,
> Also, on another note, more Squeak rather than Seaside related, since
> Squeak is its own VM in its own world, can I execute cron-like scripts
> within Squeak? What I'm trying to do is build some sort of a business
> application dashboard and I'd like for the system to re-compute the
> statistics every, say, 5 minutes. Sorry for posting this question here.
Others answered your first question so here's my attempt at the second:
[(Delay forSeconds: 300) wait.
StatisticsEngine recomputeStatistics] repeat
] forkAt: Processor userBackgroundPriority
Sorry for the C-like formatting :-) This is often The Simplest Thing
That Could Possibly Work. You can also name the process by sending it
#name: if you have the NamedProcess package loaded. That will make it
easier to see in the process browser in case you need to kill it. If
you want something more like cron (runs at a particular time) it takes
more work but not a lot more depending on how accurate you need things
In practice I find that I generally want the ability to start and stop
these processes, to have them startup automatically when the image loads
and run some shutdown code before the image exits etc. If you're using
Seaside then you are probably using Comanche/Kom in which case you're
probably using KomServices. If so, then look at the Service class. It
provides an excellent framework for timed services. Attached is an
example that runs like the one above. Start/stop it with:
serv := StaticsEngineService newNamed: 'stats'.
If you want to get a list of registered services (like the Kom service)
just explore/inspect "Service services". I use the explorer to manage
my services. There is also a nice way to manage services with
StarBrowser but I don't use SB anymore.
C. David Shaffer
-------------- next part --------------
'From Squeak3.7 of ''4 September 2004'' [latest update: #5989] on 8 March 2005 at 3:29:48 pm'!
Service subclass: #StatisticsEngineService
!StatisticsEngineService methodsFor: 'running' stamp: 'cds 3/8/2005 15:27'!
Transcript show: 'Computing statistics'; cr.! !
!StatisticsEngineService methodsFor: 'running' stamp: 'cds 3/8/2005 15:29'!
whileTrue: [self sleepFor: 30000.
More information about the Seaside