⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 repair.php

📁 PHP论坛源码(请配合MYSQL和apache安装)
💻 PHP
字号:
<?php

/*
	[DISCUZ!] utilities/repair.php - generally repair of database
	This is NOT a freeware, use is subject to license terms

	Version: 2.0.0
	Author: Crossday (info@discuz.net)
	Copyright: Crossday Studio (www.crossday.com)
	Last Modified: 2002/12/6 17:00
*/

error_reporting(7);
require './config.inc.php';

mysql_connect($dbhost, $dbuser, $dbpw);
mysql_select_db($dbname);

if(!get_cfg_var("register_globals")) {
	foreach($HTTP_GET_VARS as $key => $val) {
		$$key = $val;
	}
}

function checktable($table, $loops = 0) {
  global $db, $nohtml;

   $result = mysql_query("CHECK TABLE $table");
   if (!$nohtml) {
     echo "<tr bgcolor='#CCCCCC'><td colspan=4 align='center'>Checking table $table</td></tr>";
     echo "<tr><td>Table</td><td>Operation</td><td>Type</td><td>Text</td></tr>";
   } else {
     echo "\n>>>>>>>>>>>>>Checking Table $table\n";
     echo "---------------------------------<br>\n";
   }
   $error = 0;
   while ($r = mysql_fetch_row($result)) {
     if ($r[2] == 'error') {
       if ($r[3] == "The handler for the table doesn't support check/repair") {
         $r[2] = 'status';
         $r[3] = 'This table does not support check/repair/optimize';
         unset($bgcolor);
         $nooptimize = 1;
       } else {
         $error = 1;
         $bgcolor = 'red';
         unset($nooptimize);
       }
     } else {
       unset($bgcolor);
       unset($nooptimize);
     }
     if (!$nohtml) {
       echo "<tr><td>$r[0]</td><td>$r[1]</td><td bgcolor='$bgcolor'>$r[2]</td><td>$r[3]</td></tr>";
     } else {
       echo "$r[0] | $r[1] | $r[2] | $r[3]<br>\n";
     }
   }
   if ($error) {
     if (!$nohtml) {
       echo "<tr><td colspan=4 align='center'>Repairing table $table</td></tr>";
     } else {
       echo ">>>>>>>>>>>>>Repairing Table $table<br>\n";
     }
     $result2=mysql_query("REPAIR TABLE $table");
     if ($result2[3]!='OK')
       $bgcolor='red';
     else
       unset($bgcolor);
     if (!$nohtml) {
       echo "<tr><td>$result2[0]</td><td>$result2[1]</td><td>$result2[2]</td><td bgcolor='$bgcolor'>$result2[3]</td></tr>";
     } else {
       echo "$result2[0] | $result[1] | $result2[2] | $result2[3]<br>\n";
     }
   }
   if (($result2[3]=='OK'||!$error)&&!$nooptimize) {
     if (!$nohtml) {
       echo "<tr><td colspan=4 align='center'>Optimizing table $table</td></tr>";
     } else {
       echo ">>>>>>>>>>>>>Optimizing Table $table<br>\n";
     }
     $result3=mysql_query("OPTIMIZE TABLE $table");
     $error=0;
     while ($r3=mysql_fetch_row($result3)) {
       if ($r3[2]=='error') {
         $error=1;
         $bgcolor='red';
       } else {
         unset($bgcolor);
       }
       if (!$nohtml) {
         echo "<tr><td>$r3[0]</td><td>$r3[1]</td><td bgcolor='$bgcolor'>$r3[2]</td><td>$r3[3]</td></tr>";
       } else {
         echo "$r3[0] | $r3[1] | $r3[2] | $r3[3]<br><br>\n";
       }
     }
   }
   if ($error&&$loops) {
     checktable($table,($loops-1));
   }
}

if ($check) {

  $tables=mysql_query("SHOW TABLES");

  if (!$nohtml) {
    echo "<HTML><HEAD></HEAD><BODY><table border=1 cellspacing=0 cellpadding=4 STYLE=\"font-family: Tahoma, Verdana; font-size: 11px\">";
  }

  if ($iterations) {
    $iterations--;
  }
  while ($table=mysql_fetch_row($tables)) {

     if(substr($table[0], -8) != 'sessions') {
       $answer=checktable($table[0],$iterations);
       if (!$nohtml) {
         echo "<tr><td colspan=4>&nbsp;</td></tr>";
       }
       flush();
     }
  }

  if (!$nohtml) {
    echo "</table></BODY></HTML>";
  }
} else {
  echo "<HTML><HEAD></HEAD><BODY STYLE=\"font-family: Tahoma, Verdana; font-size: 11px\"><b>Database Table Repair Utility for Discuz! (Require MySQL 3.23+)</b><br><br>".
       "This script will attempt to repair corrupted databases. While it can repair most common errors,<br>".
       "it can not repair everything. As a side benefit it will also optimize your tables.<br>".
       "This script was copyrighted by Jelsoft and modified by Crossday Studio to make it apply for Discuz!.<br><br>".
       "Usage:<br><br>".
       "<b>iterations=x</b> (x is the number of times you wish for the script to attempt to repair a broken table)<br>".
       "<b>nohtml=1</b> (Output text only no html. Useful for cronjobs and you wish to receive text only)<br>".
       "<b>check=1</b> (without this you will get this screen and no checking)<br><br>".
       "Example Usage:<br><br>".
       "<b><a href=\"repair.php?check=1&iterations=5\">repair.php?html=1&check=1</a></b> (most common usage, will check a forum and return html results)<br>".
       "<b><a href=\"repair.php?check=1&iterations=5\">repair.php?check=1&iterations=5</a></b> (try to repair damaged tables 5 times)".
       "</BODY></HTML>";
}
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -