On Mon, Sep 02, 2002 at 03:56:22PM +0530, Ramprasad A Padmanabhan wrote:
> Hi All,
>   I am writing an web application where multiple users may write into 
> the same file concurrently. Also there is a probability that there may 
> be an admin who has opened up the file in 'vi' and editing the file.
> 
>   I want to avoid this  concurrent multiple opens.
> I tried a range on perl modules like IO::LockedFile, File::Flock;
> LockFile::Simple etc but all these do not enforce any lock and worst 
> they lock a file even if it is already open in vi

As has been mentioned elsewhere on this thread, all of these modules provide
only advisory locking.  This means that each process that wishes to modify
the file must first lock it with the same method.

This will not cause a problem with your application, because you can add the
locked ability to it.  It will, however, cause a problem with your admin
editing the file directly.  One solution is to force the admin to run their
editor in a wrapper.  For example, you can provide the admin with a simple
script, say "edit-db-file", that locks the file just as your web application
does, and then invokes his preferred editor (in $ENV{VISUAL} or
$ENV{EDITOR}).  You'll have to educate your admin (assuming he or she needs
it) that this is the only method with which they are to edit the file, and
that they must make their edits quickly.  The quickly part is so that the
web application, and by extension the user of that application, doesn't have
to wait forever to edit the file, or receive an error after the lock times
out.

Really, though, why is the admin editing this file directly?  Can you not
provide some sort of web interface for the admin as well?  That way the
admin can't screw up with the lock, and errors in the file itself are less
likely.


Michael
--
Administrator                      www.shoebox.net
Programmer, System Administrator   www.gallanttech.com
--

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to