Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Адміністрування сайту. Backup бази даних за допомогою PHP скрипта і обмеження хостингу

Наша взаимовыгодная связь https://banwar.org/


Нещодавно я зіткнувся з невеликою проблемою. Потрібно було організувати автоматичне створення резервних копій бази даних.

Завдання, звичайно, стандартна, а, з огляду на обсяг бази (менше 1 МБ), може бути вирішена без спеціального софту і обладнання.

Так що я вибрав найпростіший спосіб (здійснюється в три етапи):

1) створення дампа БД;
2) упаковка дампа в архів;
3) відправка архіву на eMail.

На сьогоднішній день, обсяги поштових скриньок дозволяють взагалі не видаляти ці архіви, і надійність рішення виходить досить високою, тому що дані зберігаються на різних серверах.

Тобто все, що потрібно зробити - написати скрипт і запускати його за допомогою cron.

Скрипт я вирішив зробити на PHP , І відразу ж зіткнувся з проблемою.

Для створення дампа бази найзручніше використовувати утиліту mysqldump, яка у мене на хостингу прекрасно работет з консолі, але не запускається з скрипта.

Причина виявилася дуже простий. В налаштуваннях PHP на сервері хостера були відключені функції: shell_exec (), exec () і т.п.

Тому довелося робити backup в два етапи.

1) Створення дампа БД
Для цього планувальник я просто додав команду:
mysqldump -uuser_name -hhost_name -puser_password db_name> /path_to_tmp/db_backup/mydbdump.sql

В результаті виконання цієї команди, створюється файл mydbdump.sql з дампом бази, який буде розміщений в папці / path_to_tmp / db_backup /. В параметрах команди, природно, потрібно вказати справжні імена бази, користувача, пароль і шлях до теки / tmp.

Примітка. Для папки / path_to_tmp / db_backup / повинні бути встановлені права на запис.

2) Упаковка дампа в архів і відправка по eMail

Ці операції виконуються одним скриптом.

&lt;? Php / ** * Цю функцію я взяв на сайті * http://www.weberdev.com/get_example-4173.html * / function mail_attachment ($ filename, $ path, $ mailto, $ from_mail, $ from_name, $ replyto, $ subject, $ message) {$ file = $ path. $ filename; $ File_size = filesize ($ file); $ Handle = fopen ($ file, "r"); $ Content = fread ($ handle, $ file_size); fclose ($ handle); $ Content = chunk_split (base64_encode ($ content)); $ Uid = md5 (uniqid (time ())); $ Name = basename ($ file); $ Header = "From:". $ From_name. "<". $ From_mail. "> \ R \ n"; $ Header. = "Reply-To:". $ Replyto. "\ R \ n"; $ Header. = "MIME-Version: 1.0 \ r \ n"; $ Header. = "Content-Type: multipart / mixed; boundary = \" ". $ Uid." \ "\ R \ n \ r \ n"; $ Header. = "This is a multi-part message in MIME format. \ R \ n"; $ Header. = "-". $ Uid. "\ R \ n"; $ Header. = "Content-type: text / plain; charset = iso-8859-1 \ r \ n"; $ Header. = "Content-Transfer-Encoding: 7bit \ r \ n \ r \ n"; $ Header. = $ Message. "\ R \ n \ r \ n"; $ Header. = "-". $ Uid. "\ R \ n"; $ Header. = "Content-Type: application / octet-stream; name = \" ". $ Filename." \ "\ R \ n"; // use diff. tyoes here $ header. = "Content-Transfer-Encoding: base64 \ r \ n"; $ Header. = "Content-Disposition: attachment; filename = \" ". $ Filename." \ "\ R \ n \ r \ n"; $ Header. = $ Content. "\ R \ n \ r \ n"; $ Header. = "-". $ Uid. "-"; if (mail ($ mailto, $ subject, "", $ header)) {// echo "mail send ... OK"; // or use booleans here} else {echo "mail send ... ERROR!"; }} // розміщення і ім'я файлу з дампом бази $ fileName = '/path_to_tmp/db_backup/mydbdump.sql'; // розміщення архіву з дампом $ archivePath = '/ home / simpleco / tmp / db_backup /'; // ім'я архіву $ archiveName = 'rssevents_backup _'. Date ( 'Y_m_j_G_i'). '. Zip'; // створюємо архів $ zip = new ZipArchive (); if ($ zip-> open ($ archivePath. $ archiveName, ZIPARCHIVE :: CREATE) === TRUE) {// додаємо в архів файл з дампом $ zip-> addFile ($ fileName, 'mydbdump.sql'); $ Zip-> close (); // echo 'ok'; } Else {echo 'failed creating zip'; } // встановлюємо змінні для відправки пошти // ім'я і шлях до файлу з архівом $ my_file = $ archiveName; $ My_path = $ archivePath; // ім'я відправника $ my_name = "my_name"; // зворотну адресу $ my_mail = "[email protected]"; $ My_replyto = "[email protected]"; // тема листа $ my_subject = "RSS events backup"; // текст листа $ my_message = 'У доданому файлі знаходиться дамп бази. '.Date (' FjY G: i '); // відправляємо лист (в третьому параметрі адресу одержувача) mail_attachment ($ my_file, $ my_path, "[email protected]", $ my_mail, $ my_name, $ my_replyto, $ my_subject, $ my_message); @unlink ($ archivePath. $ archiveName); @unlink ($ fileName); ?>

Розберемо, як працює цей скрипт.

На початку (рядки 6 - 35) оголошена функція mail_attachment, яка виконує відправку листа з вкладенням. Зізнаюся чесно, писати цю функцію самому мені було лінь 🙂. Тому я використовував готову - з цього сайта .

Після цього, пакуємо файл з дампом в архів (рядки 45 - 53). Для цього створюємо об'єкт типу ZipArchive і викликаємо його метод open з параметром ZIPARCHIVE :: CREATE. А за допомогою методу addFile додаємо в архів файл з дампом.
І, природно, не забуваємо закрити архів (метод close).

Примітка. Детальніше почитати про створення архівів за допомогою PHP можна в статті « Створення zip архівів на PHP ».

Дамп упакований, додаємо його в якості вкладення до листа і відправляємо (рядок 70). Імена параметрів функції mail_attachment говорять самі за себе, тому описувати я їх не буду.

Завершальним етапом, видаляємо файли з дампом і архівом (рядки 72, 73).

Тепер залишилося тільки завантажити цей скрипт на сервер і додати команду для cron.

php -q /path_to_backup_script/dbbackup.php

Час і періодичність запуску скриптів особливої ​​ролі не грає. Але, природно, скрипт відправки листа повинен виконуватися після того, як буде створено дамп.

Як бачите, рішення вийшло не дуже гарне, але працездатний. Звичайно, використовувати його для великих баз даних не вийде. Але, з іншого боку, якщо ваша база містить десятки або сотні мегабайт інформації, то навряд чи вона знаходиться на shared хостингу 🙂.

Успіхів!

А як ви робите бекапи?

Lt;?
А як ви робите бекапи?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: