Хотелось бы делать дамп (полный бэкап) базы (sql) с помощью php-скрипта (автоматически в cron-e). Поискал в интернете, но ничего из того, что попалось, не подходит по разным причинам: 1. У хостера запрещены exec, system команды в php-скриптах (в целях безопасности). 2. Sypex Dumper просто подвисает да и не знаю, есть ли там автоматизация (регулярное автоматическое выполненеие). 3. Примеры http://sitear.ru/material/mysql-backups, http://www.sql.ru/forum/541966/php-kak-sozdat-damp-mysql-sredstvami-php судя по обсуждениям далеки от совершенства, т.е. не факт, что будут работать корректно (например, учитывать тип таблицы, вид сравнения, текущий AUTO_INCREMENT и т.д.). Кто что посоветует?
Тоже не вариант. Нужен код корректно работающего php-скрипта, но без exec, system. Может, кто видел такой? Просьба полуфабрикты (см. ссылки в первом посте) не советовать.
ну это некрасиво. там куча ссылок, которые не подходят. возможно есть которые подходят. но так некрасиво полюбас. если бы человек умел найти он бы нашел. он пришел за советом и помощью. 99% задач не нуждаются в том, чтобы обсуждать их на форуме. Закрывать чтоли? =)
igordata, очень трогательно видеть как ты заботишся о красоте. но если моя ссылка не подойдет, автор сам скажет об этом. я постоянно убеждаюсь в том, что люди не умеют гуглить. например пишут эти свои "…without exec", и находят что угодно, только не по теме. Добавлено спустя 6 минут 15 секунд: Dimasick, "судя по обсуждениям далеки от совершенства". дык, нет в мире совершенства! ты попробуй подойдет ли инструмент X именно тебе, а то балаболок хватает — читать не перечитать.
не скажет. молча зависнет на том форуме, где с ним будут разговаривать не на отъебись. да короче Админ завещал так не делать, и в этом несомненно есть смысл для форума.
Нашел в интернете: Код (PHP): <?php // задаем побольше времени для выполнения скрипта set_time_limit(300); // ===>>>подключение к БД define("HOST", ""); define("USER", "best_like"); define("PASSWORD", "best_like"); define("DB_NAME", "best_like"); $db_connect = mysql_connect(HOST, USER, PASSWORD, TRUE); mysql_selectdb(DB_NAME, $db_connect); mysql_set_charset('utf8'); // <<<=== // ===>>>Получаем список всех таблиц $tables = array(); $result = mysql_query('SHOW TABLES'); while($row = mysql_fetch_row($result)){ $tables[] = $row[0]; } // <<<=== // создаем и открываем файл для записи дампа $file = fopen('db_backup_'.date('Y_m_d').'.sql','w+'); // Перебираем все таблицы foreach($tables as $table){ // все данные из таблицы $result = mysql_query('SELECT * FROM '.$table); // количество записей в таблице $countFields = mysql_num_fields($result); // получаем sql-код для создания таблицы $createTable = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table)); // записываем в переменную sql-код $sql.= "n".$createTable[1].";nn"; // перебираем все записи в таблице for ($i = 0; $i < $countFields; $i++){ while($row = mysql_fetch_row($result)){ // ===>>> записываем в переменную sql-код для записи данных $sql.= 'INSERT INTO '.$table.' VALUES('; // перебираем все поля таблицы for($f=0; $f<$countFields; $f++){ // экранируем спецсимволы (добавляем слеши) $row[$f] = addslashes($row[$f]); // если есть значение, то записываем его if (isset($row[$f])) { $sql.= '"'.$row[$f].'"' ; }else{ $sql.= '""'; } // если поле не последнее добавляем запятую if ($f<($countFields-1)) { $sql.= ','; } } $sql.= ");n"; // <<<=== // записываем в файл, то что скопилось в переменной fwrite($file, $sql); // очищаем переменную $sql = ""; } } // делаем красиво (отступ) $sql.="n"; } // закрываем и сохраняем файл fclose($file); ?> Только почему-то слэшей нету