mysql 数据库 限制大小_mysql数据库大小的限制

//设置部分

$id=mysql_connect(‘localhost’,’user’,’password’);   //最好是使用root,或者高权限用户

//FUN部份

function PMA_backquote($a_name, $do_it = TRUE)   // 取自phpmyadmin,用来格式化数据库名

{

if ($do_it

&& !empty($a_name) && $a_name != ‘*’) {

if (is_array($a_name)) {

$result = array();

reset($a_name);

while(list($key, $val) = each($a_name)) {

$result[$key] = ‘`’ . $val . ‘`’;

}

return $result;

} else {

return ‘`’ . $a_name . ‘`’;

}

} else {

return $a_name;

}

} // end of the ‘PMA_backquote()’ function

function limit($user,$db)   //达到限制限制用户权限后运行的程序

{

$query=’REVOKE INSERT ,UPDATE ,CREATE ON “‘.$db.'”.* FROM “‘.$user.’@localhost’;//将insert update create的权限移走。01/17修正大BUG

$result      = @mysql_query($query);//changed! only 1 query….

//相应的权限代码可以再更改.

//echo ‘lim.debug’;exit;

}

function warning($name,$email)   //超过80%时通知用户

{

$admin_email=’admin@admin.com’;     //管理员EMAIL地址。请更改

$message=’MYSQL用户:’.$name.’的数据库已超过系统允许的大小的80% /n 请及时整理数据’;   //通知的内容可以更改

@mail($admin_email,’MYSQL报告’,$message,’from:mysql@admin.com’);

@mail($email,’MYSQL大小警告’,$message,’from:mysql@admin.com’);

//echo ‘warning.debug’;exit;

}

//以下一段内容来自phpMyAdmin的查询每个数据库大小的程序

$dbs     = mysql_list_dbs() ;

while ($a_db = mysql_fetch_object($dbs)) {        //查询数据名,以后一段代码来自phpmyadmin

$dblist[] = $a_db->Database;

} // end while

mysql_free_result($dbs);

$num_dbs = count($dblist);

$total_array[0] = 0;        // number of tables

$total_array[1] = 0;        // total data size

$total_array[2] = 0;        // total index size

$total_array[3] = 0;        // big total size

// Gets the tables stats per database

for ($i = 0; $i < $num_dbs; $i++) {

$db         = $dblist[$i];

$tables     = mysql_list_tables($db);

// Number of tables

if ($tables) {

$dbs_array[$db][0] = mysql_numrows($tables);

mysql_free_result($tables);

} else {

$dbs_array[$db][0] = 0;

}

$total_array[0]    += $dbs_array[$db][0];

// Size of data and indexes

$dbs_array[$db][1] = 0; // data size column

$dbs_array[$db][2] = 0; // index size column

$dbs_array[$db][3] = 0; // full size column

$local_query = ‘SHOW TABLE STATUS FROM ‘ . PMA_backquote($db);

//echo  $db;

$result      = @mysql_query($local_query);

// needs the “@” below otherwise, warnings in case of special DB names

if ($result ) {

while ($row = mysql_fetch_array($result)) {

$dbs_array[$db][1] += $row[‘Data_length’];

$dbs_array[$db][2] += $row[‘Index_length’];

}

$dbs_array[$db][3]     = $dbs_array[$db][1] + $dbs_array[$db][2];

$total_array[1]        += $dbs_array[$db][1];

$total_array[2]        += $dbs_array[$db][2];

$total_array[3]        += $dbs_array[$db][3];

//      echo $dbs_array[$db][3].”
”;

mysql_free_result($result);

} // end if

} // end for

//查询数据库完毕。

//以下代码用来判断数据库大小是否达到限制等。。。。

mysql_select_db(‘db_limit’,$id);   //db_limit数据库名可自由更改。但需要与其它程序保持一致

for ($i = 0; $i < $num_dbs; $i++) {

$db=$dblist[$i];

$query=’select * from dbs where db_name=”‘.$db.'”‘;

$result=mysql_query($query);

if ($result)

{

$dbs_limit=mysql_fetch_array($result);

$limit_size=$dbs_limit[‘db_limit_size’];

$user=$dbs_limit[‘db_user’];

$limited=$dbs_limit[‘db_has_limit’];

$used_size=$dbs_limit[‘db_size_used’];

$email=$dbs_limit[‘db_email’];

$warning_size=$limit_size*0.8;         //0.8=80%,你可以更改为其它比例

if ($user!=”){                        //这

if ($dbs_array[$db][3] > $limit_size)

if ($dbs_array[$db][3] > $warning_size) warning($user,$email);

$query=’update dbs set db_has_limit=”‘.$limited.'” , db_size_used=”‘.$dbs_array[$db][3].'” where db_name=”‘.$db.'”‘;

$result=mysql_query($query);         //更新数据库大小至数据资料库

}

//echo $query;exit;

}

}

mysql_close($id);

//欢迎大家加以修改。但改完后。请到http://www.discuz.net/forumdisplay.php?fid=34发表修改结果

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值