/[dtapublic]/projs/dtats/trunk/libs/php/lib_dta/style/shared/cpuusagestatclock.inc
ViewVC logotype

Diff of /projs/dtats/trunk/libs/php/lib_dta/style/shared/cpuusagestatclock.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 166 by dashley, Sun Dec 18 00:57:31 2016 UTC revision 167 by dashley, Sun Jul 8 04:55:37 2018 UTC
# Line 1  Line 1 
1  <?php  <?php
2  //  //
3  //********************************************************************************  //********************************************************************************
4  //Copyright (C) 2015 David T. Ashley  //Copyright (C) 2015 David T. Ashley
5  //********************************************************************************  //********************************************************************************
6  //This program or source file is free software; you can redistribute it and/or  //This program or source file is free software; you can redistribute it and/or
7  //modify it under the terms of the GNU General Public License as published by  //modify it under the terms of the GNU General Public License as published by
8  //the Free Software Foundation; either version 2 of the License, or (at your  //the Free Software Foundation; either version 2 of the License, or (at your
9  //option) any later version.  //option) any later version.
10  //  //
11  //This program or source file is distributed in the hope that it will  //This program or source file is distributed in the hope that it will
12  //be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of  //be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
13  //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  //GNU General Public License for more details.  //GNU General Public License for more details.
15  //  //
16  //You may have received a copy of the GNU General Public License  //You may have received a copy of the GNU General Public License
17  //along with this program; if not, write to the Free Software  //along with this program; if not, write to the Free Software
18  //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  //********************************************************************************  //********************************************************************************
20  //This defines a simple PHP class to make it easier to implement a page statistic  //This defines a simple PHP class to make it easier to implement a page statistic
21  //that indicates how much CPU time was used by a page or a portion of a page.  //that indicates how much CPU time was used by a page or a portion of a page.
22  //The statistics are not always straightforward because each load of a page  //The statistics are not always straightforward because each load of a page
23  //may just add more used time to the same process.  Stats must be obtained  //may just add more used time to the same process.  Stats must be obtained
24  //by subtraction.  //by subtraction.
25  //  //
26  //The basic strategy is that a clock is constructed then may be alternatively  //The basic strategy is that a clock is constructed then may be alternatively
27  //started, stopped, and polled.  It is necessary to stop a clock before  //started, stopped, and polled.  It is necessary to stop a clock before
28  //polling it.  //polling it.
29  //  //
30  class Cpuusagestatclock  class Cpuusagestatclock
31     {     {
32     //The fields below are updated each time the clock is stopped.     //The fields below are updated each time the clock is stopped.
33     var $utime_s;     var $utime_s;
34        //The seconds portion of the amount of user time consumed.        //The seconds portion of the amount of user time consumed.
35     var $utime_m;     var $utime_m;
36        //The microseconds portion of the amount of user time consumed.        //The microseconds portion of the amount of user time consumed.
37     var $stime_s;     var $stime_s;
38        //The seconds portion of the amount of system time consumed.        //The seconds portion of the amount of system time consumed.
39     var $stime_m;     var $stime_m;
40        //The microseconds portion of the amount of system time consumed.        //The microseconds portion of the amount of system time consumed.
41    
42     //The following fields are analogous to the ones above, except they     //The following fields are analogous to the ones above, except they
43     //hold time snapshot values from when the clock was most recently     //hold time snapshot values from when the clock was most recently
44     //started.     //started.
45     var $ss_utime_s;     var $ss_utime_s;
46     var $ss_utime_m;     var $ss_utime_m;
47     var $ss_stime_s;     var $ss_stime_s;
48     var $ss_stime_m;     var $ss_stime_m;
49    
50     //This is the constructor function.     //This is the constructor function.
51     function Cpuusagestatclock()     function Cpuusagestatclock()
52       {       {
53       //All that is required at construction is to set the cumulative       //All that is required at construction is to set the cumulative
54       //values to zero.       //values to zero.
55       $this->utime_s = 0;       $this->utime_s = 0;
56       $this->utime_m = 0;       $this->utime_m = 0;
57       $this->stime_s = 0;       $this->stime_s = 0;
58       $this->stime_m = 0;       $this->stime_m = 0;
59       }       }
60    
61     //This starts the clock.  This just records a static time usage mark.     //This starts the clock.  This just records a static time usage mark.
62     function start()     function start()
63        {        {
64        //Get the snapshot from the system.        //Get the snapshot from the system.
65        $snapshot = getrusage();        $snapshot = getrusage();
66    
67        //Record the values of interest.        //Record the values of interest.
68        $this->ss_utime_s = $snapshot["ru_utime.tv_sec"];        $this->ss_utime_s = $snapshot["ru_utime.tv_sec"];
69        $this->ss_utime_m = $snapshot["ru_utime.tv_usec"];        $this->ss_utime_m = $snapshot["ru_utime.tv_usec"];
70        $this->ss_stime_s = $snapshot["ru_stime.tv_sec"];        $this->ss_stime_s = $snapshot["ru_stime.tv_sec"];
71        $this->ss_stime_m = $snapshot["ru_stime.tv_usec"];        $this->ss_stime_m = $snapshot["ru_stime.tv_usec"];
72        }        }
73    
74    
75     //This stops the clock.  This calculates the used time and adds it in to     //This stops the clock.  This calculates the used time and adds it in to
76     //the totals.     //the totals.
77     function stop()     function stop()
78        {        {
79        //Get the snapshot from the system.        //Get the snapshot from the system.
80        $snapshot = getrusage();        $snapshot = getrusage();
81    
82        //Calculate and add in the elapsed user time usage since the snapshot.        //Calculate and add in the elapsed user time usage since the snapshot.
83        $this->utime_s += ($snapshot["ru_utime.tv_sec"] - $this->ss_utime_s);        $this->utime_s += ($snapshot["ru_utime.tv_sec"] - $this->ss_utime_s);
84        $this->utime_m += ($snapshot["ru_utime.tv_usec"] - $this->ss_utime_m);        $this->utime_m += ($snapshot["ru_utime.tv_usec"] - $this->ss_utime_m);
85        while ($this->utime_m < 0)        while ($this->utime_m < 0)
86          {          {
87          $this->utime_m += 1000000;          $this->utime_m += 1000000;
88          $this->utime_s--;          $this->utime_s--;
89          }          }
90    
91        //Calculate and add in the elapsed system time usage since the snapshot.        //Calculate and add in the elapsed system time usage since the snapshot.
92        $this->stime_s += ($snapshot["ru_stime.tv_sec"] - $this->ss_stime_s);        $this->stime_s += ($snapshot["ru_stime.tv_sec"] - $this->ss_stime_s);
93        $this->stime_m += ($snapshot["ru_stime.tv_usec"] - $this->ss_stime_m);        $this->stime_m += ($snapshot["ru_stime.tv_usec"] - $this->ss_stime_m);
94        while ($this->stime_m < 0)        while ($this->stime_m < 0)
95           {           {
96           $this->stime_m += 1000000;           $this->stime_m += 1000000;
97           $this->stime_s--;           $this->stime_s--;
98           }           }
99        }        }
100    
101     //This returns the user time microseconds elapsed of a stopped clock, with no padding.     //This returns the user time microseconds elapsed of a stopped clock, with no padding.
102     function utime_raw_us()     function utime_raw_us()
103        {        {
104          return($this->utime_m);          return($this->utime_m);
105        }        }
106    
107     //This returns the user time microseconds elapsed of a stopped clock, padded     //This returns the user time microseconds elapsed of a stopped clock, padded
108     //with leading zeros to be six digits long.     //with leading zeros to be six digits long.
109     function utime_formatted_us()     function utime_formatted_us()
110        {        {
111        $rv = $this->utime_raw_us();        $rv = $this->utime_raw_us();
112    
113        while(strlen($rv) < 6)        while(strlen($rv) < 6)
114           $rv = "0" . $rv;           $rv = "0" . $rv;
115    
116        return($rv);        return($rv);
117        }        }
118    
119     //This returns the system time microseconds elapsed of a stopped clock, with no padding.     //This returns the system time microseconds elapsed of a stopped clock, with no padding.
120     function stime_raw_us()     function stime_raw_us()
121        {        {
122          return($this->stime_m);          return($this->stime_m);
123        }        }
124    
125     //This returns the system time microseconds elapsed of a stopped clock, padded     //This returns the system time microseconds elapsed of a stopped clock, padded
126     //with leading zeros to be six digits long.     //with leading zeros to be six digits long.
127     function stime_formatted_us()     function stime_formatted_us()
128        {        {
129        $rv = $this->stime_raw_us();        $rv = $this->stime_raw_us();
130    
131        while(strlen($rv) < 6)        while(strlen($rv) < 6)
132           $rv = "0" . $rv;           $rv = "0" . $rv;
133    
134        return($rv);        return($rv);
135        }        }
136    
137     //This returns the total time microseconds elapsed of a stopped clock, with no padding.     //This returns the total time microseconds elapsed of a stopped clock, with no padding.
138     function ttime_raw_us()     function ttime_raw_us()
139        {        {
140        $rv = $this->stime_m + $this->utime_m;        $rv = $this->stime_m + $this->utime_m;
141    
142        if ($rv >= 1000000)        if ($rv >= 1000000)
143           $rv -= 1000000;           $rv -= 1000000;
144    
145        return($rv);        return($rv);
146        }        }
147    
148     //This returns the total time microseconds elapsed of a stopped clock, padded     //This returns the total time microseconds elapsed of a stopped clock, padded
149     //with leading zeros to be six digits long.     //with leading zeros to be six digits long.
150     function ttime_formatted_us()     function ttime_formatted_us()
151        {        {
152        $rv = $this->ttime_raw_us();        $rv = $this->ttime_raw_us();
153    
154        while(strlen($rv) < 6)        while(strlen($rv) < 6)
155           $rv = "0" . $rv;           $rv = "0" . $rv;
156    
157        return($rv);        return($rv);
158        }        }
159    
160     //This returns the user time seconds elapsed of a stopped clock.     //This returns the user time seconds elapsed of a stopped clock.
161     function utime_s()     function utime_s()
162        {        {
163        return($this->utime_s);        return($this->utime_s);
164        }        }
165    
166     //This returns the system time seconds elapsed of a stopped clock.     //This returns the system time seconds elapsed of a stopped clock.
167     function stime_s()     function stime_s()
168        {        {
169        return($this->stime_s);        return($this->stime_s);
170        }        }
171    
172     //This returns the total time seconds elapsed of a stopped clock.     //This returns the total time seconds elapsed of a stopped clock.
173     function ttime_s()     function ttime_s()
174        {        {
175        $rv = $this->stime_s + $this->utime_s;        $rv = $this->stime_s + $this->utime_s;
176    
177        $us_total = $this->stime_m + $this->utime_m;        $us_total = $this->stime_m + $this->utime_m;
178    
179        if ($us_total >= 1000000)        if ($us_total >= 1000000)
180           $rv++;           $rv++;
181                
182        return($rv);        return($rv);
183        }        }
184    
185     //This returns the standard string for a footer of a web page.  No HTML formatting tags     //This returns the standard string for a footer of a web page.  No HTML formatting tags
186     //are included.     //are included.
187     function std_web_page_cpu_time_usage_footer()     function std_web_page_cpu_time_usage_footer()
188        {        {
189        return        return
190           (           (
191           "This page required approximately "           "This page required approximately "
192           .           .
193           $this->ttime_s()           $this->ttime_s()
194           .           .
195           "."           "."
196           .           .
197           Substr($this->ttime_formatted_us(), 0, 2)           Substr($this->ttime_formatted_us(), 0, 2)
198           .           .
199           "s ("           "s ("
200           .           .
201           $this->stime_s()           $this->stime_s()
202           .           .
203           "."           "."
204           .           .
205           Substr($this->stime_formatted_us(), 0, 2)           Substr($this->stime_formatted_us(), 0, 2)
206           .           .
207           "s system, "           "s system, "
208           .           .
209           $this->utime_s()           $this->utime_s()
210           .           .
211           "."           "."
212           .           .
213           Substr($this->utime_formatted_us(), 0, 2)           Substr($this->utime_formatted_us(), 0, 2)
214           .           .
215           "s user) of CPU time on the server to generate."           "s user) of CPU time on the server to generate."
216           );           );
217        }        }
218     }     }
219  ?>  ?>

Legend:
Removed from v.166  
changed lines
  Added in v.167

dashley@gmail.com
ViewVC Help
Powered by ViewVC 1.1.25