From: Patrick Hartman on 17 Feb 2010 20:53 I was using this to calculate execution time at the bottom of a script: print time - $^T; However I noticed that the time just got a little bit longer everytime I ran it despite the apparent page load time not changing at all. I changed it to this: printf "BEG: $^T \n"; printf "END: ". time; And the $^T was outputting the same start time for every execution; every time I would load the page, the time just got longer and longer since only the end time was updating. This problem is only happening when I execute from mod_perl / Apache. If I go to the command line and execute it through there it works fine. I have Apache on my local computer, so both places are pointing to the same installation of Perl. Any ideas what would be causing this? Thanks, Patrick
From: Patrick Hartman on 17 Feb 2010 21:01 On Feb 17, 7:53 pm, Patrick Hartman <patri...(a)gmail.com> wrote: > I was using this to calculate execution time at the bottom of a > script: > > print time - $^T; > > However I noticed that the time just got a little bit longer everytime > I ran it despite the apparent page load time not changing at all. I > changed it to this: > > printf "BEG: $^T \n"; > printf "END: ". time; > > And the $^T was outputting the same start time for every execution; > every time I would load the page, the time just got longer and longer > since only the end time was updating. > > This problem is only happening when I execute from mod_perl / Apache. > If I go to the command line and execute it through there it works > fine. I have Apache on my local computer, so both places are pointing > to the same installation of Perl. > > Any ideas what would be causing this? > > Thanks, > Patrick Sorry, I should have searched Google first. I will post the solution I found and beg for forgiveness :). http://modperlbook.org/html/6-5-1-T-and-time.html "Under mod_perl, processes don't quit after serving a single request. Thus, $^T gets initialized to the server startup time and retains this value throughout the process's life. Even if you don't use this variable directly, it's important to know that Perl refers to the value of $^T internally." Patrick
From: Martijn Lievaart on 18 Feb 2010 01:55 On Wed, 17 Feb 2010 17:53:41 -0800, Patrick Hartman wrote: > I was using this to calculate execution time at the bottom of a script: > > print time - $^T; > > However I noticed that the time just got a little bit longer everytime I > ran it despite the apparent page load time not changing at all. I > changed it to this: > > printf "BEG: $^T \n"; > printf "END: ". time; > > And the $^T was outputting the same start time for every execution; > every time I would load the page, the time just got longer and longer > since only the end time was updating. > > This problem is only happening when I execute from mod_perl / Apache. If > I go to the command line and execute it through there it works fine. I > have Apache on my local computer, so both places are pointing to the > same installation of Perl. > > Any ideas what would be causing this? > Mod_perl loads the interpreter only once. Just store the start time at the top of your script and use that instead of ^T. M4
|
Pages: 1 Prev: FAQ 2.14 Where are the archives for comp.lang.perl.misc? Next: File Position |