H e r m i t
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору yurazzz Вот где-то в дербях форума ibresource.ru когда-то нашел: Цитата: Пару советов Так по доброте душевной. Написали мы тут кодик полезный , так как у вас инвижн боард то он как раз и для вас подойдет. Иногда базы рушаться от одновременных запросов, вы наверняка с этим сталкивались. Так как у нас клиентов на хостинге много, у всех возникают вопросы к хостерам, что мол с моей базой ? а ну чините, а мы то тут и не причем. Так вот надоело это всё , вообщем смотрите. Данная ошибка связана с недоработками в скриптах Invision Board, не выполняющего блокировку таблиц при выполнении нескольких пследовательных операций записи в базу данных. В связи с этим, при одновременном постинге двоих или более пользователей форума происходит нарушение целостности индексных файлов MySQL. Для исправления данной ошибки, необходимо выполнить переиндексацию таблиц. Для этого в Invision Board предусмотрена специальная функция в панели администратора (http://www.softboard.ru/admin.php) - SQL Management -> mySQL Toolbox -> Repair selected tables. Для автоматизации данного процесса, можно изменить скрипты Invision Board, чтобы они автоматически выполняли переиндексацию при ошибке mySQL # 1016 - такой обработчик можно поместить в файл www/sources/Drivers/mySQL.php, в метод fatal_error() класса db_driver: После строк if ($this->return_die == 1) { $this->error = mysql_error(); return TRUE; } поместить следующий код: // Repair tables if indexes are broken - BEGIN if ( mysql_errno() == 1016 ) { $QueryID = mysql_query("SHOW TABLES", $this->connection_id()) or die("SQL Error! Please contact administrator"); $SQLRow = array(); $TableList = array(); while ( ! ( ( $SQLRow = mysql_fetch_row($QueryID) ) === false ) ) { $TableList[] = $SQLRow[0]; } foreach($TableList as $TableName) { mysql_query("REPAIR TABLE $TableName", $this->connection_id()) or die("SQL Error! Please contact administrator"); } if (!headers_sent()) { header("Location: ".$_SERVER['REQUEST_URI']); } else { die("Error! Please reload page..."); } } // Repair tables if indexes are broken - END С уважением , Комиссаров Владимир BEST- HOSTING, System Administrator. | Добавлено Может поможет... |