Ошибка: Failed to parse the Currency Converter XML document.
$23 935.38


Ошибка: Failed to parse the Currency Converter XML document.
$1 743.93


Ошибка: Failed to parse the Currency Converter XML document.
$13 950.32


Удалённое восстановление баз MySQL с помощью PHP

Как импортировать большой SQL-скрипт (дамп базы данных MySQL для форума phpBB), если обычными споcобами (загрузка через web-интерфейс phpMyAdmin, Backup cPanel) проблематична, особенно на модемном соединении.
Проблема
Как импортировать большой SQL-скрипт (дамп базы данных MySQL для форума phpBB), если обычными споcобами (загрузка через web-интерфейс phpMyAdmin, Backup cPanel) проблематична, особенно на модемном соединении.

Решение

Можно попробовать через MySQL клиент типа SQLyog, MySQL-Front и т.д., но опять же не факт, что это закончится благополучно. Минимальное время — 1 (обычно 2-5) секунда на передачу и выполнение одной SQL-команды (а если их тысяч пять? загрузка займёт весь рабочий день, плюс нужно следить, не упала ли связь). Можно импортировать файл дампа с помощью phpMyAdmin или встроенных средств сPanel (что по сути один фиг), но закачивать большие объёмы данных методом POST из формы не очень надёжно и нецелесообразно — метод POST подходит для более рутинных задач, типа «Введите имя» и т.д.


Перепробовав все перечисленные способы, я выяснил, что основная проблема — непрерывная передача 9 Мб файла. Передать файл, говорите? Так это же делается через старый добрый FTP! Можно залить дамп на FTP (не волнуясь о целостности, ведь можно и докачать) и попросить админов восстановить базу, но не факт, что вам помогут, тем более на бесплатном хостинге. Хотя... где вы видели бесплатный хостинг с MySQL? Стыд и срам тому программисту, который каждый раз трясёт суппорт своими недоделками.


Пройдя через всё это, решил написать простенькую утилиту на PHP, которая будет читать SQL-файл построчно, точнее покомандно: выбирает команду (ограниченную точкой-с-запятой, исполняет её, и так далее по циклу). То есть все операции происходят внутри сервера, без участия клиента. Скорость бешеная, 9 Мб SQL-скрипт за 5 секунд!!! Ессесно, файлик должен лежать там же, где скрипт.

Минусы

Занимает большое количество ресурсов сервера, весь файл читается в память. Можно усовершенствовать, читая из файлового только отдельные SQL-команды. Будем считать это отправной точкой для сложной утилиты восстановления БД на сервере MySQL.

<?php

mysql_connect(«localhost», «login», «password»);
mysql_select_db («database»);

if (!file_exists($fname)) die («Файл $fname не существует!»);
$fp = fopen ($fname, «r»);
$buffer = fread($fp, filesize($fname));
fclose ($fp);

$prev = 0;

while ($next = strpos($buffer,«;»,$prev+1))
{
$i++;
$a = substr($buffer,$prev+1,$next-$prev);
mysql_query($a);
$prev = $next;
}

echo «Выполнено $i команд»;

?>

Что-то вроде этого.

$fname — имя файла SQL-дампа
$prev — позиция предыдущей «;»
$next — позиция следующей «;» начиная с позиции $prev

Вызываем скрипт примерно так: sqlbackup.php?fname=backup.sql, будет выполнен файл backup.sql. В конце выводится число выполненных команд. Я замеряю время выполнения для интереса, здесь для упрощения убрал. Каждый может усложнить, как считает нужным, это всего лишь простое решение повседневной задачи за пять минут.

 

Интересное

Графический счётчик на PHP
Данный пример демонстрирует работу простого графического счетчика. По функциональности он совершенно идентичен текстовому счетчику.Для работы этого счетчика необходимо создать графическое...
Подробнее...
Время выполнения SQL запросов
Итак, нам нужно засечь время, потраченное на выполнение SQL запросов ? Это не очень легко, но и не сложно. Начнем с определения задачи. Необходимо выдать полное время, затраченное на генерацию...
Подробнее...
Практикум по защите сети...
С применением Log Parser, виртуализации и небольшой доли психотерапииОтражение попыток проникновения в сеть — процесс бесконечный. Благодаря значительному прогрессу последних лет защита сетей...
Подробнее...
Комплексное продвижение...
В этой статье мы остановимся на положительных сторонах каждого отдельного этапа, а так же определим положительные и отрицательные стороны комплексного подхода при продвижении сайта, т.е....
Подробнее...
Коды ответов сервера
В первой строке ответа HTTP-сервера содержится информация о том, был запрос клиента успешным или нет, а также данные о причинах успешного либо неуспешного завершения запроса. Эта информация...
Подробнее...
Какая программа для...
Среди систем автоматизированного проектирования большой популярностью пользуется система AutoCAD. Однако иногда пользователь обдумывает вопрос о ее замене на альтернативные программные продукты....
Подробнее...
Руководство по настройке...
Да, эта система, имеет заметные отличия от Windows XP Professional, нацеленные, в первую очередь, на максимальное повышение надежности этой ОС. Особенно бросается в глаза то, что теперь по...
Подробнее...
Ставим РНР
Само собой, сначала надо его скачать. Идем на этот раз на официальный сайт http://www.php.net и ищем там раздел downloads.Собственно, искать не приходится, он в самом верху первый. После того, как...
Подробнее...
Ввод ограничений на...
Введение: В среде домена централизованное управление рабочими станции можно осуществлять через групповые политики домена. Если же у вас нет сервера, всё равно можно использовать групповые политики...
Подробнее...
Шаги по увеличению...
Этот документ является списком параметров защиты для применения на FreeBSD серверах.Существует огромное количество статей, обзоров и инструкций в которых описаны методы защиты вашей FreeBSD...
Подробнее...