]> andersk Git - sql-web.git/blame - cron/checkProcesses.php
merged 125:126 for nDatabasesHard
[sql-web.git] / cron / checkProcesses.php
CommitLineData
6eacda6d
JP
1<?php
2
aaaa7a8f 3@chdir(dirname(__FILE__).'/../');
6eacda6d
JP
4require_once('mitsql.cfg.php');
5require_once('mitsql.lib.php');
5852fbc4
JP
6isOffline() && exit;
7
70776def 8define('MAX_PROC_TIME', 30);
6eacda6d 9
6eacda6d
JP
10$baddbs = $badusers = $bad = array();
11$result = mysql_query('SHOW FULL PROCESSLIST');
12while ($row = mysql_fetch_assoc($result)){
13 if ($row['Time']>MAX_PROC_TIME && $row['Command']!='Sleep') {
14 $bad[] = $row;
15 $baddbs[] = $row['db'];
16 $badusers[] = $row['User'];
17 }
18}
19mysql_free_result($result);
20
21foreach($bad as $badproc) {
22 $mailtos = $mailnames = array();
23 $baddb = mysql_escape_string($badproc['db']);
70776def 24 if (empty($baddb)) continue;
6eacda6d
JP
25 $badtime = $badproc['Time'];
26 $badquery = $badproc['Info'];
6eacda6d
JP
27 $sql = "SELECT User.UserId,User.Name,User.Email
28 FROM `User`
29 NATURAL JOIN DBOwner
30 NATURAL JOIN DB
82ffc3b5
JP
31 WHERE DB.Name = '$baddb'
32 AND User.UL < 10";
6eacda6d
JP
33 $r = fetchRows(DBSelect($sql),'UserId');
34 foreach($r as $addy) {
35 $mailtos[] = $addy['Email'];
36 $mailnames[] = $addy['Name'];
37 }
70776def
JP
38 if (empty($mailtos)) {
39 echo "No email found for $baddb\n";
40 continue;
41 }
6eacda6d
JP
42 $mailto = implode(', ',$mailtos);
43 $mailname = implode(', ',$mailnames);
70776def 44 $mailsubj = "[sql.mit.edu] Slow Query on $baddb";
6eacda6d
JP
45 $mailbody = "Dear $mailname:
46
47A slow query was found on your database: $baddb
48It took $badtime seconds and has been aborted.
49
ba8e5719
JP
50We do not allow inefficient SQL queries to run this long. Your query has
51been appended to this message for your records. Please optimize your
52queries to avoid having your queries killed in the future. If you have any
53questions, please contact sql@mit.edu.
6eacda6d 54
70776def
JP
55The SQL Service
56Email: <sql@mit.edu>
57Web: http://sql.mit.edu/
6eacda6d
JP
58
59---------------------------------------------------------------------------
60
61$badquery";
62
8ed5cf01 63 mysql_query('KILL '.$badproc['Id']);
6eacda6d
JP
64 mail($mailto,$mailsubj,$mailbody,"From: SQL Service <sql@mit.edu>\r\nBcc: sql@mit.edu\r\n");
65}
66
67?>
This page took 0.053055 seconds and 5 git commands to generate.