СТАНЬ VIP
СК Армении: в связи с гибелью солдата дело возбуждено по признакам "доведения до самоубийства""Требуем добиться освобождения армян из бакинских тюрем": архиепископ Баграт проводит акцию у генпрокуратуры АрменииФАФ требует увольнения президента ФФА (видео)Мирный договор между Арменией и Азербайджаном может быть подписан до саммита COP29 – МИД РАСело Неркин Ханд в Сюнике с трех сторон незаконно окружено 25-ью азербайджанским военными постами - Арман ТатоянПашинян: Армения готова подписать мирный договор с Азербайджаном «уже в этом месяце»

Не названный блог
Аватара пользователя
Gisher
 
Сообщения: 6084
Зарегистрирован: 17 сен 2006, 20:46
Пол: мужской
Статус: Учусь жить...
Блог: Просмотр блога
Архивы
- Сентябрь 2018
+ Апрель 2018
+ Декабрь 2017
+ Ноябрь 2016
+ Апрель 2016
+ Декабрь 2015
+ Сентябрь 2015
+ Август 2015
+ Июль 2015
+ Май 2015
+ Январь 2015
+ Декабрь 2014
+ Ноябрь 2014
+ Октябрь 2014
+ Сентябрь 2014
+ Август 2014
+ Июль 2014
+ Июнь 2014
+ Май 2014
+ Апрель 2014
+ Декабрь 2013
+ Ноябрь 2013
+ Сентябрь 2013
+ Август 2013
+ Июль 2013
+ Июнь 2013
+ Май 2013
+ Апрель 2013
+ Март 2013
+ Февраль 2013
+ Январь 2013
+ Декабрь 2012
+ Октябрь 2012
+ Сентябрь 2012
+ Июль 2012
+ Май 2012
+ Ноябрь 2011
+ Сентябрь 2011
+ Август 2011
+ Июль 2011
+ Апрель 2011
+ Февраль 2011
+ Октябрь 2010
+ Сентябрь 2010
+ Август 2010
+ Март 2010
+ Январь 2010
+ Декабрь 2009
+ Октябрь 2009
+ Сентябрь 2009
+ Август 2009
+ Июль 2009
+ Май 2009
+ Апрель 2009
+ Март 2009
+ Декабрь 2008
+ Ноябрь 2008
+ Август 2008
1 из 52 из 53 из 54 из 55 из 5

Оптимизация MySql датабаз и таблиц с помощью cron

Постоянная ссылка Gisher 22 май 2015, 00:01

Автоматическая оптимизация MySql датабаз и таблиц по заданному интервалу с помощью cron.

Зачастую приходится в консоль или в phpmyadmin, чтобы оптимизировать таблицы.
Ниже представлю php скрипт для выполнения этой задачи автоматически.

Создаём файл myoptim.php:
Код: Выделить всё · Развернуть
<?php
echo '<pre>' . "\n\n";
set_time_limit( 100 );
//
$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$start = $time;
//
//Connection variables :
$h = 'куда коннектимся, хост';
$u = 'пользователь баз данных';
$p = 'пароль от датабазы';
//
$dummy_db = 'Указывать любое название базы от юзера';
//
//
$db_link = mysql_connect($h,$u,$p);
//
$res = mysql_db_query($dummy_db, 'SHOW DATABASES', $db_link) or die('Could not connect: ' . mysql_error());
echo 'Found '. mysql_num_rows( $res ) . ' databases' . "\n";
$dbs = array();
while ( $rec = mysql_fetch_array($res) )
{
$dbs [] = $rec [0];
}
//
foreach ( $dbs as $db_name )
{
echo "Database : $db_name \n\n";
$res = mysql_db_query($dummy_db, "SHOW TABLE STATUS FROM `" . $db_name . "`", $db_link) or die('Query : ' . mysql_error());
$to_optimize = array();
while ( $rec = mysql_fetch_array($res) )
{
if ( $rec['Data_free'] > 0 )
{
$to_optimize [] = $rec['Name'];
echo $rec['Name'] . ' needs optimization' . "\n";
}
}
if ( count ( $to_optimize ) > 0 )
{
foreach ( $to_optimize as $tbl )
{
mysql_db_query($db_name, "OPTIMIZE TABLE `" . $tbl ."`", $db_link );
}
}
}
//
$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$finish = $time;
$total_time = round(($finish - $start), 6);
echo 'Parsed in ' . $total_time . ' secs' . "\n\n";
?>

Редактируете данные на свои
    $h = 'куда коннектимся, хост';
    $u = 'пользователь баз данных';
    $p = 'пароль от датабазы';
    $dummy_db = 'Указывать любое название базы от юзера';

Записываем задачу в крон, пример команды подразумевает выполнение каждые 3 часа, меняйте как вам удобнее:
* */03 * * * cd /пусть до вашего скрипта/ && /usr/bin/php ./myoptim.php
Кстати, если выполнить команду cd /пусть до вашего скрипта/ && /usr/bin/php ./myoptim.php в консоли (ssh), можно увидеть ход выполнение и подробности.
На этом всё!)

0 комментариев27201 просмотров