Źródło:
Komentarze (0)
| | źródło pochodzi od: sympozjon Opis: Sprawdza poprawność tabel mysql; wysyła informacje o błędach na maila, lub na komórkę Język: php |
#!/usr/bin/php -q
<?
###################################################################### ########
#
# MySQL Maintainer v
0.
9
#
# Author: Philip Gatt <pxg@hotmail.com>
# Version:
0.
9
# Date Created: Aug
15,
2000
# L
ast Mod
ified: Aug
15,
2000
#
# Requires: MySQL v.
3.
23.
21 or higher (it may work on earlier versions of
#
3.
23, but it h
asn't been tested)
#
# What it
does: It checks every table in your mysql datab
ase,
if the table
# h
as a problem, it tries to repair it and sends a warning to the emails
# in the
$warning_emails variable.
If it cannot repair the table, it sends
# an alert to the emails in the
$alert_emails variable. I recommend putting
# your cell phone / pager's email address in the alert_emails, and your
# regular address in the warning_emails.
#
# Rights: Use this program
as you see fit, alter it,
do whatever you like,
#
as long
as this message, including the author info, remains unchanged.
# Also, ple
ase not
ify me
if you are using this, just so I know my work
# w
as appreciated.
#
# Additional Note:
If you need any custom programming, I am available to
# write custom scripts / programs. No project is too large or small.
# Ple
ase contact me at pxg@hotmail.com.
#
########################################################################### ###
######## SCRIPT CONFIGURATION ################################################
#
# Ple
ase carefully read and set all of these options.
#
# SKIP_DATAB
ASES is an array of datab
ases not to process
$SKIP_DATABASES =
array(
"skipdatabase1", "skipdatabase2", "skipdatabase3");
// don't check these databases
#
# Set SILENT_MODE to
1 for silent mode (good
for cron jobs), and to
0 to get output to the screen
$SILENT_MODE =
0;
#
# ALERT_EMAILS and WARNING_EMAILS contain a list of email addresses to send
# alerts and warnings to (respectivly)
$ALERT_EMAILS =
array(
"you@youremail.com", "0000000000@messaging.sprintpcs.com");
$WARNING_EMAILS =
array(
"you@youremail.com");
#
# ALERT_SUBJECT and WARNING_SUBJECT are the message subjects
for warning and alert
# emails
$ALERT_SUBJECT =
"MySQL Maintainer Alert";
$WARNING_SUBJECT =
"MySQL Maintainer Warning";
#
# Set your mysql server info here, root is a good account to use because it h
as
# access to mod
ify all tables in the datab
ase
$MYSQL_SERVER =
"localhost";
$MYSQL_USER =
"root";
$MYSQL_PASS = "";
#
######## END OF CONFIGURATION ################################################
mysql_connect (
$MYSQL_SERVER,
$MYSQL_USER,
$MYSQL_PASS) or die (
PG_fatal(mysql_error()));
#-- get a list of datab
ases
$databasesres = mysql_query (
"show databases") or die (
PG_fatal(mysql_error()));
#-- cycle through the list of datab
ases
while (
$dar =
mysql_fetch_array(
$databasesres))
{
$dbname =
$dar[
0];
#--
if the datab
ase is not in the skip array, process it
if (!
PG_in_array(
$SKIP_DATABASES,
$dbname))
{
PG_screen_display (
$dbname .
"n");
#--
switch to the datab
ase
mysql_select_db (
$dbname);
#-- get a list of tables in this datab
ase
$tablesres = mysql_query (
"show tables") or die (
PG_fatal(mysql_error()));
#-- cycle through the list of tables and check them
while (
$tar =
mysql_fetch_array(
$tablesres))
{
$tablename =
$tar[
0];
#-- display some info
PG_screen_display (PG_print_sp (
" | " . $tablename, 50, " "));
flush();
#-- check the table
$res = mysql_query (
"check table $tablename") or die (
PG_fatal(mysql_error()));
$ar =
mysql_fetch_array(
$res);
#--
if we didn't get an OK
as a response, try to fix it
if (
$ar[Msg_text] !=
"OK")
{
$checkerr =
$ar[Msg_text];
PG_screen_display (
"ERROR $checkerr --- ");
flush();
#-- try to fix the table
$res = mysql_query (
"repair table $tar[0]") or die (
PG_fatal(mysql_error()));
$ar =
mysql_fetch_array(
$res);
#--
if we got an error trying to fix it, send an alert
if (
$ar[Msg_text] !=
"OK")
{
PG_screen_display (
"UNABLE TO REPAIR ($ar[Msg_text]) !!!!");
register_alert (
"Database: $dbnamenTable: $tablenamenError: $checkerrnStatus: $ar[Msg_text]nn");
}
else
{
PG_screen_display (
"REPAIRED");
register_warning (
"Database: $dbnamenTable: $tablenamenError: $checkerrnStatus: Repairednn");
}
}
else
PG_screen_display (
"OK");
PG_screen_display (
"n");
}
PG_screen_display (
"n");
}
}
send_warnings_and_alerts();
exit();
function PG_fatal(
$str)
{
register_alert (
"nnFatal Error: $strn");
send_warnings_and_alerts();
exit;
}
function send_warnings_and_alerts ()
{
global
$alertstr;
global
$warningstr;
global
$WARNING_EMAILS;
global
$ALERT_EMAILS;
global
$WARNING_SUBJECT;
global
$ALERT_SUBJECT;
if (
$warningstr != "")
{
reset (
$WARNING_EMAILS);
while (list (
$trash,
$email) = each (
$WARNING_EMAILS))
{
mail (
$email,
$WARNING_SUBJECT,
$warningstr);
echo "Sending warning to $emailn";
}
echo $warningstr;
}
if (
$alertstr != "")
{
reset (
$ALERT_EMAILS);
while (list (
$trash,
$email) = each (
$ALERT_EMAILS))
{
mail (
$email,
$ALERT_SUBJECT,
$alertstr);
echo "Sending warning to $emailn";
}
echo $alertstr;
}
}
function register_alert (
$str)
{
global
$alertstr;
$alertstr .=
$str;
return 1;
}
function register_warning (
$str)
{
global
$warningstr;
$warningstr .=
$str;
return 1;
}
function PG_screen_display (
$string)
{
# displays message to standard output (the screen)
if not running in silent mode
global
$SILENT_MODE;
if (!
$SILENT_MODE)
echo $string;
return 1;
}
function PG_in_array (
$array,
$value)
{
# this
function returns true
if $value is found in
$array
$found =
0;
for (
$i =
0;
$i <
count(
$array);
$i++)
if (
$array[
$i] ==
$value)
{
$found =
1;
break;
}
return $found;
}
function PG_print_sp (
$str,
$len,
$delim =
" ")
{
$res =
$str;
for (
$i =
strlen(
$str);
$i <
$len;
$i++)
$res .=
$delim;
return $res;
}
?>
</body>
</html>
powrótTagi do źródła:
Poprawność danych tabel mysqla, mysql, sql, bazy danych, php
Nikt jeszcze nie skomentował tego źródła.