Аutorepair Tables
-
- phpBB 2.0.5
- Сообщения: 477
- Стаж: 21 год
Аutorepair Tables
Раньше, вроде встречал где-то такой MOD. От ошибок MySQL с кодом 1016, 1034.
Не было надобности для ознакомления, сейчас понадобился ...
Кто-нибудь подскажет - где взять ?
Не было надобности для ознакомления, сейчас понадобился ...
Кто-нибудь подскажет - где взять ?
-
- phpBB 2.0.5
- Сообщения: 477
- Стаж: 21 год
-
- Former team member
- Сообщения: 3942
- Стаж: 19 лет 11 месяцев
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 3 раза
Вы, наверное, ссылкой поделитесь?
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
-
- phpBB 2.0.5
- Сообщения: 477
- Стаж: 21 год
Поручик ссылки как таковой нет.
Этот МОД установлен в phpBB modified by Przemo
http://www.przemo.org/phpBB2/
Уж не знаю, насколько "этично" выдергивать и публиковать от туда код ...
Скажем так - сделал "по образу и подобию" из этой модификации
Этот МОД установлен в phpBB modified by Przemo
http://www.przemo.org/phpBB2/
Уж не знаю, насколько "этично" выдергивать и публиковать от туда код ...
Скажем так - сделал "по образу и подобию" из этой модификации

-
- phpBB 2.0.1
- Сообщения: 294
- Стаж: 20 лет 2 месяца
- Откуда: Санкт-Петербург
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
Код: Выделить всё
OPEN
includes/functions.php
FIND
// Add on DEBUG info
BEFORE ADD
// Try to repair table if potential damage
if ( ($sql_error['code'] == '1016' || $sql_error['code'] == '1034') && ($board_config['autorepair_tables'] != 0 || !isset($board_config['autorepair_tables'])) )
{
$sql3 = "SELECT config_value
FROM " . CONFIG_TABLE . "
WHERE config_name = 'last_dtable_notify'";
$result3 = $db->sql_query($sql3);
$row3 = $db->sql_fetchrow($result3);
if ( $row3['config_value'] < (CR_TIME - 3600) )
{
$pos1 = strpos($sql_error['message'], ": '");
$pos2 = strpos($sql_error['message'], "'.");
$table_damage = substr($sql_error['message'], ($pos1 + 3), ($pos2 - ($pos1 + 3)));
$table_damage = str_replace('.MYI', '', $table_damage);
$table_damage = str_replace('.MYD', '', $table_damage);
$sql = "REPAIR TABLE " . $table_damage;
if ( !($result = $db->sql_query($sql)) )
{
$rt_result = $db->sql_error();
$rep_result = sprintf($lang['rrtf'], $table_damage, $sql, $rt_result['message'], $table_damage);
}
else
{
$rep_result = sprintf($lang['rrts'], $table_damage, $sql, $table_damage);
}
@mail($board_config['board_email'], $lang['mstr'], $rep_result);
update_config('last_dtable_notify', CR_TIME);
}
$msg_text = $lang['rrsum'] . '<br /><br /><span style="font size: 10px">' . $msg_text . '</span>';
}
FIND
?>
BEFORE ADD
function update_config($field, $value)
{
global $db;
$sql = "UPDATE " . CONFIG_TABLE . "
SET config_value = '" . str_replace("\'", "''", $value) . "'
WHERE config_name = '$field'";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update config table for field: ' . $field, '', __LINE__, __FILE__, $sql);
}
}
OPEN
includes/constants.php
FIND
?>
BEFORE ADD
define('CR_TIME', time());
OPEN
language/lang_main.php
FIND
?>
BEFORE ADD
$lang['mstr'] = 'Automatic repair table';
$lang['rrtf'] = "The table %s is damage, attempt to auto repair failed:\n%s\n%s\nTry repair manually, execute query: REPAIR TABLE %s";
$lang['rrts'] = "The table %s was damage, attempt to auto repair propably successfull:\n%s\n If not try repair manually, execute query REPAIR TABLE %s";
$lang['rrsum'] = 'Occured fine error, the script was attempt to repair and notice board administrator.';
Добавлено спустя 3 минуты 39 секунд:
Еще надо добавить в phpbb_config параметр autorepair_tables, 0 или 1 соответвенно запрещают или разрешают автопочинку.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- phpBB 2.0.1
- Сообщения: 294
- Стаж: 20 лет 2 месяца
- Откуда: Санкт-Петербург
оно чинит именно поломанную таблицу?
Добавлено спустя 1 минуту 7 секунд:
было бы интересно посылать админу на почту что было срабатывание
как сие сообразить ?;)
Добавлено спустя 1 минуту 25 секунд:
ой
торможу...
почитал код, там какое то упоминает email есть
наверное как раз и есть оно
Добавлено спустя 1 минуту 21 секунду:
у меня вопрос
я как бы не являюсь владельцем форума,
но вписан как админ
мне тож придёт email?:)
Добавлено спустя 1 минуту 7 секунд:
было бы интересно посылать админу на почту что было срабатывание
как сие сообразить ?;)
Добавлено спустя 1 минуту 25 секунд:
ой
торможу...
почитал код, там какое то упоминает email есть
наверное как раз и есть оно
Добавлено спустя 1 минуту 21 секунду:

я как бы не являюсь владельцем форума,
но вписан как админ
мне тож придёт email?:)
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
OtherDima
Ну так поломай таблицу и увидишь
Ну так поломай таблицу и увидишь

Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 2.0.1
- Сообщения: 294
- Стаж: 20 лет 2 месяца
- Откуда: Санкт-Петербург
после внесения этих изменений в код
перестал работать DB Maintenance
оказалось у DBM такая же функция есть
если я удалю функцию добавленную в functions.php
мод Auto Repair работать будет?
перестал работать DB Maintenance
Код: Выделить всё
Fatal error: Cannot redeclare update_config() (previously declared in /home/.../public_html/forum/includes/functions.php:982) in /home/.../public_html/forum/includes/functions_dbmtnc.php on line 142
если я удалю функцию добавленную в functions.php
мод Auto Repair работать будет?
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
Тогда убить функцию и вот так:
Что касается "а куда уходит". Вам вот это
Код: Выделить всё
FIND
update_config('last_dtable_notify', CR_TIME);
REPLACE WITH
$sql4 = "UPDATE " . CONFIG_TABLE . " SET config_value = '" . CR_TIME . "' WHERE config_name = 'last_dtable_notify'";
$db->sql_query($sql4) or message_die(GENERAL_ERROR, 'Could not update config table for last_dtable_notify', '', __LINE__, __FILE__, $sql4);
... вообще ни о чем не говорит или просто не хотелось думать?Xpert писал(а):mail($board_config['board_email']
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- phpBB 2.0.1
- Сообщения: 294
- Стаж: 20 лет 2 месяца
- Откуда: Санкт-Петербург
понял, т.е. если я там впишу ПЕРВЫЙ_МАИЛ, ВТОРОЙ_МАИЛXpert писал(а):Что касается "а куда уходит". Вам вот это... вообще ни о чем не говорит или просто не хотелось думать?Xpert писал(а):mail($board_config['board_email']
то это будет светиться в исходящих письмах от форума
как можно модифицировать код, чтобы сделать выборку email всех админов форума

Добавлено спустя 3 минуты 47 секунд:
решил сделать так
создал board_email2 и внёс в него свой email
и в коде поправил чтобы брало email из этой ячейки
