Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: Append to a busy flat-file db without leaving customer in lurch

by bluto (Curate)
on Jan 23, 2006 at 16:37 UTC ( #524963=note: print w/ replies, xml ) Need Help??


in reply to Append to a busy flat-file db without leaving customer in lurch

Some suggestions in case you want to use flat files...

Find out why flock is failing. I'm pretty sure on most platforms that it blocks until the lock occurs (unless you use LOCK_NB). What is '$!' when it dies?

If you don't need updates to show up immediately in the database, defer them. For example, write your output to a separate file and continue on. Then have a single process periodically come along and read these other files and append to the database.

Depending on your platform and filesystem (check your docs), you *may* be able to get away with no lock at all while opening a file in append mode. Some OSs arbitrate appenders for you if you are writing a single line of text since it's a very common operation (esp for log files). FWIW, I personally wouldn't do this since then the code relies on a specific setup and it is hard to test this to make sure it's working, but YMMV. Update: After thinking about this, it probably also depends on you printing only small, single lines of text at a time. Another reason to avoid it.

Since you care that the 'print' works, check the error code for it. If you run out of disk space, your code can silently fail.


Comment on Re: Append to a busy flat-file db without leaving customer in lurch

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://524963]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (10)
As of 2014-12-27 21:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (177 votes), past polls