Beefy Boxes and Bandwidth Generously Provided by pair Networks RobOMonk
Perl-Sensitive Sunglasses
 
PerlMonks  

Can Perl remain persistent for scripts just like mod_perl does for apache?

( #48943=categorized question: print w/ replies, xml ) Need Help??
Contributed by dcardamo on Dec 30, 2000 at 05:00 UTC
Q&A  > programs and processes


Description:

Is there a way already in place to make perl stay running as a system task so that it doesn't need to startup each time to interpret a program? Also, can it keep a stored copy of those programs in memory?
If not, is there anyone who wants to make this happen with me?

Answer: Can Perl remain persistent for scripts just like mod_perl does for apache?
contributed by tye

I can certainly understand the desire for this. The start-up time for Perl scripts can be a bit of a problem (otherwise there would be no need for mod_perl -- though it is usually more of a problem when serving web pages than most other situations).

Each time you run a script, the perl executable must start up, initialize a new interpreter, then compile the script and any modules or other stuff that the script requires. This can add up -- though, I think this is less often noticed as a problem on modern machines that have to be faster to deal with the growing software bloat.

If perl is being run often, then most operating systems will keep the perl executable cached in memory (if not short on RAM). But the operating system can't cache the compiled Perl script no matter how often you run it.

A lot of work has been put into a pre-compiler for Perl that takes a Perl script and compiles it to some other format that is much faster for Perl to load. Initially the load time for the pre-compiled scripts was actually longer than the original compile time because of the amount of data that had to be read in.

I hear much improvement has been made in this area so you should check out the B (for Backend) modules and tools that come standard with modern versions of Perl.

I've often wanted a good Perl shell that would let me do simple things like "rm file" without loading any external executables and would let me do more complex things by loading a module so that each time I want to do that again, it is already loaded for me. But that will only help start-up of some interactive commands.

If you have just a few particular scripts that are being run over and over, then there are things you can do to speed those up, making all or much of the script into a demon that is always running, for example.

tye (Nothing is obvious unless you are overlooking something)
Answer: Can Perl remain persistent for scripts just like mod_perl does for apache?
contributed by coreolyn

Possibly you are looking to daemonize your script?

If so check out these modules at CPAN

Answer: Can Perl remain persistent for scripts just like mod_perl does for apache?
contributed by Anonymous Monk

Yes, look at Speedy... http://daemoninc.com/SpeedyCGI/

Although it refers to CGI, don't be misled into thinking that's all it can do. Sounds perfect for what you are asking for.

Lindsay

Answer: Can Perl remain persistent for scripts just like mod_perl does for apache?
contributed by mp

See PPerl.

PPerl - Make perl scripts persistent in memory

Answer: Can Perl remain persistent for scripts just like mod_perl does for apache?
contributed by entropy

If you want the perl compiler to load faster, you can do 'chmod o+t /usr/bin/perl' as the superuser. This will cause the text page to stay in swap (whatever that means... I quote the man page), and perl should load faster.

Answer: Can Perl remain persistent for scripts just like mod_perl does for apache?
contributed by ichimunki

What would be the advantage to this? The interpretation of the script is the slow part of start-up, if I'm not mistaken.

If you want your script to stay in memory run the whole thing from inside a while (1) loop, with an explicit option to exit somewhere inside the loop.

Answer: Can Perl remain persistent for scripts just like mod_perl does for apache?
contributed by extremely

Under most OS drive and memory caches keep perl in memory if it is called fairly regularly. Rather than explicitly preloading scripts let your OS cache the ones you use often.

Please (register and) log in if you wish to add an answer



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • Outside of code tags, you may need to use entities for some characters:
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others surveying the Monastery: (9)
    As of 2014-04-25 09:28 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      April first is:







      Results (586 votes), past polls