File:
0.04.00a/server/base/tests/mysql.inc.php (
View as Code)
1: 2: /* -------------------------------------------------------------
3: This file is part of FreeNATS
4:
5: FreeNATS is (C) Copyright 2008 PurplePixie Systems
6:
7: FreeNATS is free software: you can redistribute it and/or modify
8: it under the terms of the GNU General Public License as published by
9: the Free Software Foundation, either version 3 of the License, or
10: (at your option) any later version.
11:
12: FreeNATS is distributed in the hope that it will be useful,
13: but WITHOUT ANY WARRANTY; without even the implied warranty of
14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15: GNU General Public License for more details.
16:
17: You should have received a copy of the GNU General Public License
18: along with FreeNATS. If not, see www.gnu.org/licenses
19:
20: For more information see www.purplepixie.org/freenats
21: -------------------------------------------------------------- */
22:
23: function mysql_test_rows($host,$user,$pass,$database="",$timeout=0,$query="",$debug=false)
24: {
25: // this will return a 0 at any stage if connect etc is ok but no rows are returned
26: // negative if something actually fails
27: if ($timeout>0)
28: {
29: $oldtimeout=get_ini("mysql.timeout");
30: set_ini("mysql.timeout",$timeout);
31: }
32:
33: if ($debug) echo "mysql://".$user.":".$pass."@".$host."/".$database."\n";
34:
35: $sql=@mysql_connect($host,$user,$pass,true);
36:
37: if ((!$sql)||($database==""))
38: {
39: if ($timeout>0) set_ini("mysql.timeout",$oldtimeout);
40: if (!$sql)
41: {
42: if ($debug) echo "Connect Error: ".mysql_error($sql)."\n";
43: return -1; // total connect failed
44: }
45: // otherwise is no database so close and return 0
46: @mysql_close($sql);
47: return 0;
48: }
49:
50: @mysql_select_db($database,$sql);
51:
52: if (mysql_errno($sql)!=0) // failed to select DB
53: {
54: if ($timeout>0) set_ini("mysql.timeout",$oldtimeout);
55: @mysql_close($sql);
56: return -2; // select database failed
57: }
58:
59: if ($query=="")
60: { // no query to perform
61: if ($timeout>0) set_ini("mysql.timeout",$oldtimeout);
62: @mysql_close($sql);
63: return 0; // all ok but no query/rows
64: }
65:
66: $r=@mysql_query($query,$sql);
67: if (mysql_errno($sql)==0) // successful query
68: {
69: if (is_bool($r)) // didn't return any daya
70: {
71: $return=mysql_affected_rows($sql);
72: }
73: else
74: {
75: $return=mysql_num_rows($r);
76: @mysql_free_result($r,$sql); // free if a result
77: }
78: }
79: else $return=-3; // query failed
80:
81: @mysql_close($sql);
82: if ($timeout>0) set_ini("mysql.timeout",$oldtimeout);
83: return $return;
84: }
85:
86: function mysql_test_time($host,$user,$pass,$database="",$timeout=0,$query="",$debug=false)
87: {
88: $timer=new TFNTimer();
89: $timer->Start();
90: $val=mysql_test_rows($host,$user,$pass,$database,$timeout,$query,$debug);
91: $time=$timer->Stop();
92:
93: if ($val<0) return $val; // connect/select/query failed
94:
95: // if $val is 0 then nothing was returned - maybe check the query here? Complicates the idea
96: // though for the user so left. Will have to do two tests for both time and rows 0 as fails
97:
98: $time=round($time,4);
99: if ($time==0) return "0.0001";
100: return $time;
101: }
102:
103: ?>