Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re^3: processing file while file is in use

by gwadej (Chaplain)
on Apr 21, 2009 at 18:06 UTC ( [id://759077]=note: print w/replies, xml ) Need Help??


in reply to Re^2: processing file while file is in use
in thread processing file while file is in use

From the documentation, it looks like you use File::Tail to open the file in the reading process and read a line at a time.

The module handles all of the housekeeping about the file being written to while you are reading it. There should be no reason for the writing process to change.

G. Wade
  • Comment on Re^3: processing file while file is in use

Replies are listed 'Best First'.
Re^4: processing file while file is in use
by grashoper (Monk) on Apr 22, 2009 at 17:14 UTC
    I am looking to perform some processing based on the data being written to the file, so I was thinking I would periodically open a logfile write to it, test for a condition close it, etc. does this make any sense? my goal is to be informed should errors occur with running loadrunner tests, so that if a change takes place on the server and my script starts failing I am notified, as well as having notifications sent should requests take longer than expected on the server.

      Maybe I'm completely confused, but what I had understood that you wanted was something like the following:

      1. loadrunner is writing to an output file as it runs (say output.log)
      2. your program reads from output.log looking for interesting results.

      Normally the difficult part of this is getting the second program to continue reading when new data is written to the file. That is what File::Tail helps with.

      Now it sounds like you have a few other issues to consider.

      1. some form of logging requirement
      2. notify you on interesting events
      3. requirement to check if requests take too long

      I can't tell if you need the logging in its own right, or if you just need it for the notification. If you just need the notifications, there are many methods that can be used (email, Log::Log4perl, flashing lights, etc.). If you need the log itself, then either writing to a file directly or one of the logging modules on CPAN would work.

      Checking to see if a process is taking too long is could be handled with a timeout on the read. File::Tail can handle this using the maxinterval parameter. If File::Tail doesn't suit your needs, you could wrap the read in an eval and use the alarm function to make certain you don't wait too long. (If you time out, you can notify and loop back to wait some more.)

      At this point, it would probably be worthwhile to try to write down (possibly just for yourself) the process you are trying to implement. From this end, it looks a bit fuzzy. Possibly writing out the events you are looking for and how you want to handle them would help. Then, some of the techniques I've mentioned may make more sense.

      G. Wade

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (1)
As of 2024-04-25 01:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found