comparison contrib/app_acct_tools/display_results.php @ 533:4cdf146f11d5

Added a set of example PHP scripts to parse the app_acct.fdx data.
author Sebastien Decugis <sdecugis@nict.go.jp>
date Tue, 07 Sep 2010 16:57:48 +0900
parents
children ce3cacbbccc9
comparison
equal deleted inserted replaced
532:4cb8f63a0f67 533:4cdf146f11d5
1 <?php
2
3 # The copyright of this file is the same as the freeDiameter project. Licence is BSD.
4
5 # This file should no be called directly;
6 # instead it should be included from another script that sets its parameters as described bellow.
7
8 ## $USERS
9 # An array of the user names to display; the empty array will display all users.
10 # This parameter MUST be set.
11 if (!isset($USERS))
12 die('Do not call this file directly');
13
14 ## $START_TIME:
15 # If set, this restricts the displayed data to sessions starting after $START
16
17 ## $END_TIME:
18 # If set, this restricts the displayed data to sessions starting before $END
19
20 ## $LIMIT:
21 ## $LIMIT_OFFSET:
22 # If set, these limit the number of accounting records displayed (for pagination purpose)
23
24 #------------------------------------------------------------------------------------------
25 # DATABASE:
26
27 /* The Connection String used to access that database:
28 Example: "host=localhost dbname=app_acct user=freediameter password=foo" */
29 $CONNSTR="";
30
31 /* The name of the table containing the processed data (from process_records.php script) */
32 $PROCESSED="processed";
33
34 #------------------------------------------------------------------------------------------
35
36
37 /* Connect to the database */
38 $dbconn = pg_connect($CONNSTR)
39 or die('Could not connect: ' . pg_last_error() . "\n");
40
41 /* Function to format download size (from php.net) */
42 function human_readable( $size )
43 {
44 $count = 0;
45 $format = array("B","KB","MB","GB","TB","PB","EB","ZB","YB");
46 while(($size/1024)>1 && $count<8)
47 {
48 $size=$size/1024;
49 $count++;
50 }
51 if( $size >= 100 ) $decimals = 0;
52 elseif ($size >= 10 ) $decimals = 1;
53 else $decimals = 2;
54 $return = number_format($size,$decimals,'.',' ')." ".$format[$count];
55 return $return;
56 }
57
58 /* Build the SQL query */
59 $sql = 'SELECT *, to_char(sess_start, \'YYYY-MM-DD&nbsp;HH24:MI:SS&nbsp;(TZ)\') as fmt_sess_start FROM "'.$PROCESSED.'"';
60 $where=0;
61 if ($USERS) {
62 $USERS = array_map(pg_escape_bytea, $USERS);
63 $sql .= " WHERE user_name IN ('". join("', '", array_values($USERS))."') ";
64 $where = 1;
65 }
66
67 if ($START_TIME) {
68 $START_TIME = pg_escape_string($START_TIME);
69 if ($where++)
70 $sql .= " AND ";
71 else
72 $sql .= " WHERE ";
73 $sql .= "sess_start >= '".$START_TIME."'";
74 }
75 if ($END_TIME) {
76 $END_TIME = pg_escape_string($END_TIME);
77 if ($where++)
78 $sql .= " AND ";
79 else
80 $sql .= " WHERE ";
81 $sql .= "sess_start <= '".$END_TIME."'";
82 }
83
84 $sql .= " ORDER BY sess_start, sess_duration";
85
86 if ($LIMIT)
87 $sql .= " LIMIT $LIMIT";
88 if ($LIMIT_OFFSET)
89 $sql .= " OFFSET $LIMIT_OFFSET";
90
91 /* Execute the query */
92 $result = pg_query($dbconn, $sql) or die('Query failed: ' . pg_last_error() . "\n");
93 $recs = pg_num_rows($result);
94 if ($recs == 0) {
95 echo "<p><em>Sorry, no data is available in this selection.</em></p>\n";
96 } else {
97 echo "<p><strong>$recs</strong> records found.</p>\n";
98 ?>
99 <table>
100 <tr>
101 <th>Device identifier</th>
102 <th>Access Device information</th>
103 <th>Session started on</th>
104 <th>Duration</th>
105 <th>Downloaded</th>
106 <th>Uploaded</th>
107 </tr>
108 <?php
109 while ($record = pg_fetch_array($result, null, PGSQL_ASSOC)) {
110 echo " <tr title='".htmlentities(pg_unescape_bytea($record["user_name"]))."'>\n";
111 echo " <td>";
112 echo htmlentities(pg_unescape_bytea($record["user_device"]));
113 echo "</td>\n";
114 echo " <td>";
115 echo htmlentities(pg_unescape_bytea($record["nas_info"]));
116 echo "</td>\n";
117 echo " <td>";
118 echo $record["fmt_sess_start"];
119 echo "</td>\n";
120 echo " <td>";
121 echo htmlentities($record["sess_duration"]);
122 echo "</td>\n";
123 echo " <td>";
124 echo human_readable( $record["downl_bytes"] )." (".$record["downl_packets"]."pckts)";
125 echo "</td>\n";
126 echo " <td>";
127 echo human_readable( $record["upl_bytes"] )." (".$record["upl_packets"]."pckts)";
128 echo "</td>\n";
129 echo " </tr>\n";
130
131 }
132 }
133 pg_free_result($result);
134
135
136 /* Closing connection */
137 pg_close($dbconn);
138
139
140
141 ?>
"Welcome to our mercurial repository"