Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Восстановление дампа phpmyadmin
Форумы портала PHP.SU » PHP » Пользовательские функции » Восстановление дампа phpmyadmin

Страниц (1): [1]
 

1. valenok - 22 Января, 2009 - 23:01:34 - перейти к сообщению
Иногда дамп сделанный pma дома нужно загрузить на сервер
и если вставлся его в тот же pma на сервере, то процесс может затянуться очень долго.
Я использую вот такой простенький скрипт.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. function getmicrotime()
  4. {
  5.    list($usec, $sec) = explode(" ", microtime());
  6.    return ((float)$usec + (float)$sec);
  7. }
  8. $time_start = getmicrotime();
  9.  
  10. header('Content-Type: text/html; charset=utf-8');
  11.  
  12. $db = mysql_connect('localhost','юзер','пассвёрд');
  13. mysql_select_db('mysql',$db);
  14. mysql_query('SET NAMES \'UTF8\'',$db);
  15.  
  16.  
  17. $file = file_get_contents('dump.sql');
  18. $file = explode(';',$file);
  19. $c = count($file);
  20.  
  21. for( $i = 0; $i < $c; $i++)
  22. {
  23.   if(substr(trim($file[$i]),0,3) == 'USE') // USE `mydatabase`;
  24.   {
  25.      $base = substr(trim($file[$i]),5,-1);
  26.      mysql_select_db($base,$db);
  27.      mysql_query('SET NAMES \'UTF8\'',$db);
  28.      continue;
  29.   }
  30.   mysql_query($file[$i]);
  31.  if($i>0 && $i%500==0)
  32.  {
  33.     echo 'Выполняю запрос № ',$i,"<br>";
  34.     ob_flush(); flush();
  35.   }
  36. }
  37. ?>
  38.  
  39. Восстановление завершено.<br>
  40. Количество запросов: <?PHP echo $i; ?>
  41. Время затраченное на восстановление дампа: <?PHP echo number_format((getmicrotime() - $time_start),6,'.',','); ?>
  42.  
  43.  
2. EuGen - 23 Января, 2009 - 10:24:31 - перейти к сообщению
Valenok - а почему бы не использовать source?
Цитата:

source file_name, \. file_name

Reads the named file and executes the statements contained therein. On Windows, you can specify pathname separators as / or \\.



Иначе говоря, за некоторым упрощением:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. //...
  4. mysql_query("SOURCE dump.sql");
  5. //...
  6. ?>
  7.  

Или я неверно понял задачу?
3. valenok - 23 Января, 2009 - 11:31:15 - перейти к сообщению
В принципе можно и SOURCE использовать.
Если бы я о нем вспомнил раньше чем написал то что выше =)
4. zeit - 13 Июля, 2009 - 15:44:30 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //...
  3. mysql_query("SOURCE dump.sql");
  4. //...
  5. ?>
  6.  


К примеру, файл dump.sql лежит в папке \sql относительно корня директории сайта. Пусть к файлу dump.sql в этом коде относительно чего надо указывать? То есть так: mysql_query("SOURCE sql\dump.sql" );?
5. Viper - 14 Июля, 2009 - 07:52:27 - перейти к сообщению
путь \.\полный_путь_к_дампу\dump.sql

 

Powered by ExBB FM 1.0 RC1