wow at together.net
Mon Mar 7 19:44:42 CST 2005
This is most similar to the way I was imagining doing it. It does
appear to be simple. And yes, the users are not very numerous (no more
than 100 for the next six months) and they are all unique (one user per
computer reporting their availability).
On Mar 7, 2005, at 7:02 PM, Alex Tweedly wrote:
> Richard Miller wrote:
>> Looking for suggestions on how to best handle the following scenario.
>> Imagine a number of computers spread out across the country (some
>> PC's, some Mac's) running a custom Rev application. On each computer,
>> the application continually (every 30-60 seconds) sends a small file
>> (just a few characters) into a central server. This file contains
>> information about the availability of the user (available now, within
>> 10 minutes, not available). Let's say there are 100 of these
>> computers and applications running at any given time, all reporting
>> in every 30 seconds or so.
> What's the relationship between the "user" and the computer ?
> i.e. can the same user be on 2 of the machines at the same time ?
> if so, what should be reported as the status for that user - the one
> that happened to give the most recent status, or the most available?
> or what ? Does the status say "User 1 is available now on machine
> 18.104.22.168" ?
> if not, is there already a scheme to prevent it (or simply an
> assumption that it shouldn't happen) ?
> is there a finite set of users ? how big ?
> or is "user" equivalent to "computer" ?
>> I've also got another 100 computers (all Mac's) running a different
>> Rev application. Each of these computers needs to know the combined
>> status of the first 100 users, continually polling for this data
>> every 30 seconds. So, for example, at any given moment it knows:
>> User 1 is available now
>> User 2 is not available
>> User 3 is not available,
>> User 4 will be available in 10 minutes
>> I've got a dedicated Mac server available, on which I want to place a
>> Rev application to gather and disseminate the required information.
>> The first 100 computers will continually inform that central
>> application of their status, and the other 100 will continually ask
>> this application for the status of the first 100 users.
>> Suggestions on how to do this. I've quite a number of ideas, but I'm
>> not sure of the fastest and most stable (and perhaps easiest) way.
>> One concern is with multiple users (the ones supplying data) trying
>> to check in at the same time.
> Best way : (esp. if your user base might grow over time) - central app
> using a database.
> But for the current problem description this is probably overkill.
> Depending on your answers to the above questions, you could probably
> do ....
> Simplest way: (NB Only if users are unique and not too numerous)
> create a status file per user.
> on the user client: put myStatus into URL
> ("http://remote.machine.net/statuses/" & myUserName)
> on the server:
> run a Rev script that every 10 seconds (or whatever level of
> currency is required) does the equivalent of
> cd /httpdocs/statuses
> cat * > ../newstatus
> cd ..
> mv newstatus allstatus
> (or just stick that shell script into a cron job)
> on the other clients:
> put URL "http://remote.machine.net/allstatus" into allStatus
> No programming (or almost no programming) to do, very simple, easy to
> monitor (just look at files and dates).
> Interlocks are handed by the file system - the rename is an atomic
> operation, so safe (on Unix - I'm assuming OS X operates the same way)
> from read/write clashes.
> Alex Tweedly http://www.tweedly.net
> No virus found in this outgoing message.
> Checked by AVG Anti-Virus.
> Version: 7.0.308 / Virus Database: 266.6.0 - Release Date: 02/03/2005
> use-revolution mailing list
> use-revolution at lists.runrev.com
More information about the use-livecode