Периодична проверка на MySQL база данни за промени

PHP скрипта по-долу може да се използва за периодична проверка на дадена база данни за настъпили промени.

Може да се използват два фактора за установяване на промените - време на последната промяна на всяка таблица или броя редове във всяка таблица. В зависимост от търсеното поведение се избира един от двата метода. Времето на промяна на таблицата е подходящо за проверка на главно статични таблици, докато сравняването на броя редове се използва за таблици, съхраняващи често променяни данни.
 


Няколко примерни употреби
 


Да предположим, че грешките при използване на дадена система се записват в таблица в базата. За да се добави функционалност за известяване при настъпване на грешка е нужно да се познава системата и тя да бъде модифицирана. В повечето случаи това не е възможно. Тогава използваме дадения скрипт, като за целта се настройва да изпраща подходящо съобщение при промяна и се задава периодично изпълнение.

Друг пример е база данни на уеб сайт, в който потребителите публикуват свои статии. Ако използваната система за управление на съдържанието не поддържа подобна функционалност, може лесно да се настрои получаване на известие при добавяне на ново съдържание.

Трето приложение - известяване за нова поръчка в онлайн магазините - просто се указва седене на таблицата с поръчките.


Преглед на скрипта
 


Целия скрипт може да откриете тук. Използва се файл за съхраняване на състоянието между проверките. Ето примерна интеграция - ще наблюдаваме за промени базата данни webshop1, използвайки потребител webuser с парола webpass. За съхраняване на състоянието между проверките ползваме файла /home/webuser/webshop1_state. Ето как изглежда това:

/home/webuser/checker.php:
<?php

$checker = new DatabaseChangesChecker('localhost', 'webuser', 'webpass', 'webshop1', '/home/webuser/webshop1_state');
$checker->check_update_time();
echo $checker->perform_check();

?>


Добавяме и следния ред в crontab:

MAILTO:notify@example.com
*/20 * * * * /usr/bin/php /home/webuser/checker.php

При липса на промени скрипта няма да изведе нищо и следователно няма да бъде изпратено писмо. Обратното, при засичане на промяна скрипта извежда текста на промяната и cron демона изпраща писмо.

За да потиснем проверката на често модифицирани таблици, например брояч на посетителите, добавяме следния ред веднага след инициализацията:

$checker->set_ignore_tables(array("visitor_stats"));

 

Няма коментари

Обратно към списъка със статиите

Тази страница последно е променяна на 2024-04-19 07:02:49