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


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


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


Удалённое восстановление баз 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. В конце выводится число выполненных команд. Я замеряю время выполнения для интереса, здесь для упрощения убрал. Каждый может усложнить, как считает нужным, это всего лишь простое решение повседневной задачи за пять минут.

 

Интересное

Хороший дизайн должен...
Хороший дизайн является не роскошью, а необходимостью. С каждым днем количество веб-сайтов увеличивается все больше и больше. Общий уровень дизайнерской грамотности постоянно повышается, а...
Подробнее...
Основы позиционирования блоков
Блоки — прямоугольные области, используемые в CSS для формирования и отображения документов. Это упрощенно, очень сильно упрощенно, но для начала вполне может и хватить.С появлением нового...
Подробнее...
Добавление CSS
Таблицы стилей могут быть добавлены на веб-страницу тремя разными способами, которые различаются по своим возможностям.Таблицы связанных стилейСамый мощный и удобный способ определения стилей и...
Подробнее...
Интерполяция изображений в...
Этот алгоритм увеличивает изображение в произвольное количество раз при помощи билинейной интерполяции. При создании нового изображения каждой его точке с целыми координатами (x,y) сопоставляется...
Подробнее...
Оптимальный выбор ключевых...
Очень часто при заказе услуги «Продвижение сайта» клиенты требуют вывод сайта в ТОП по определенным поисковым запросам, которые сами же и сообщают. Фирмы-оптимизаторы не отказываются от условий...
Подробнее...
Как выбрать телефон
На сегодняшний день на рынке имеется неограниченное число видов моделей мобильных телефонов, от самых простых, до моделей, имеющих бесчисленное количество функций, и возможностей деловым людям.
Подробнее...
Очистка списка последних...
При частом применении команды «Подключить сетевой диск» (Map Network Drive) в Windows XP, в списке последних операций (Most Recently Used, MRU) появляется множество различных сетевых путей. В этом...
Подробнее...
Забавное программирование...
Забавное программирование в DelphiПриведённый здесь материал можно озаглавить не иначе как «Чем заняться программисту, если нечего делать». На самом деле, Delphi настолько интересная среда,...
Подробнее...
Стандарт доступности...
По мере роста аудитории Интернета, вопрос цифрового равенства становится все более важным. Пользователи с ограниченными возможностями не должны быть лишены доступа к содержимому сайтов в...
Подробнее...
Выпуск iPad Mini – роковая...
Первые слухи о намерениях корпорации Apple выпустить новый компактный планшет, цена которого будет составлять не более $299, по всей видимости, становятся вполне настойчивыми, чтобы применить к...
Подробнее...