You might try using this combination of scripts:
On every layout where your client user can access the layouts and modify data, use the OnRecordCommit trigger to specify this script:
If [Get (MultiUserState) = 2 ]
Set Variable [$Interval ; Value 30 // specify an interval in minutes]
Install OnTimer ["Close File Script" ; $Interval * 60 ]
Use File Options to run this same script when the file is opened.
Make the "Close File Script" a single line script that closes the file. This script will run and close the file if the specified time interval counts down without the timer being reset.
The If step will skip everything if this is you opening it on the host (function returns 1 in this case) for every client accessing the system, this script sets up a timer that runs down in 30 minutes. If they commit a record, the script will reset the timer starting it back up on a 30 minute count down.
You can also perform this script from other scripts such as those set to perform finds or sort records if there are browsing actions you want to also serve as triggers to reset the count down.
PS. You can also use Save A Copy as... to get a copy of the file to use for development without having to close the current hosted file.
Terrific answer! I was not aware of the "Install OnTimer function". I'm going to try this. I'll let you know how this works.
Thanks in advance.