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


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


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


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

 

Интересное

10 фактов, которые нужно...
Технология усиления служб (service hardening) — один из множества новейших механизмов обеспечения безопасности Windows Vista и нового поколения серверов Windows, известных как Longhorn Server....
Подробнее...
Визуальный редактор для...
Наверно мой уважаемый читатель не раз сталкивался с ситуацией, когда конечный веб-проект ориентировался не на узкий круг веб-программистов или людей «введенных» в систему, а...
Подробнее...
Определение наличия...
По статистике, около 90% пользователей в наши дни пользуются Internet Explorer (5-й или 6-й версией). В этих браузерах Flash, как правило, уже установлен (если же нет, то, при наличии...
Подробнее...
Стандартные программы Windows
При установке операционной системы, по умолчанию ставится целый пакет стандартных программ Windows, о которых простому пользователю просто ничего не известно. На эти программы нет ярлыков, они...
Подробнее...
Коды ответов сервера
В первой строке ответа HTTP-сервера содержится информация о том, был запрос клиента успешным или нет, а также данные о причинах успешного либо неуспешного завершения запроса. Эта информация...
Подробнее...
Windows взломали...
Специалист по компьютерной безопасности Адам Бойли (Adam Boileau) из новозеландской компании Immunity может обойти пароль Windows XP за несколько секунд. На персональном сайте он опубликовал...
Подробнее...
Режим редактирования в IE
Оказывается ie может редактировать открытые им документы, и не только текст, но и в том числе вставлять имиджи и т.п. По сути дела полноценный html-editor у нас в руках, но только об этом...
Подробнее...
Правила написания и...
Структура reg-файловЗнание реестра Windows будет не полным без умения написать reg-файл. Начнем с того, что это такое. Reg-файл — это файл, имеющий определенную структуру и содержащий...
Подробнее...
Java обгоняет по...
Одним из главных недостатков языка Java традиционно считается невысокая скорость работы программ по сравнению с приложениями на языке С++. И для приложений, где переносимость между платформами...
Подробнее...
Раскрутка сайта
Солидной компании, предлагающей товары и услуги потребителям, невозможно обойтись без собственного сайта. Наличие страницы в Интернете позволяет привлечь больше потенциальных клиентов из числа...
Подробнее...