PHP Импорт большого файла запроса в MySql - PullRequest
0 голосов
/ 12 января 2019

Мне нужно импортировать все старые данные для резервного копирования, но у меня слишком много данных, чтобы он не мог выполнить все запросы, такие как 2k запросов в моем файле .sql. Некоторые из них выполняются, но не выполняется 100% всех запросов. Там нет ошибок, показанных после. Я пытался зациклить его четыре раза, может быть, он все это выполнит, потому что, когда я пытался без цикла, он создает только 4 таблицы, но в резервной копии у меня есть 9 таблиц, поэтому я снова нажал кнопку, и оказалось, что в базе данных 8 таблиц и при третьей попытке щелкнуть его снова, теперь у него 9 таблиц, но данные неполные.

Вот тест, который я сделал для резервного копирования и восстановления

вот мой код:

<?php 
ini_set('max_execution_time', 300);
for($c = 0; $c < 4;$c++){
    $connection = mysqli_connect('localhost','root','','test');

    $filename = 'backup.sql';
    $handle = fopen($filename, "r+");
    $contents = fread($handle, filesize($filename));

    $sql = explode(';', $contents);
    foreach ($sql as $query) {
        $result = mysqli_query($connection,$query);
    }
    fclose($handle);
}
echo "Successfully Imported";
?>

1 Ответ

0 голосов
/ 12 января 2019

Наиболее эффективный способ сделать резервную копию базы данных / таблицы и восстановить ее из резервной копии - это использовать инструменты командной строки mysql , например ::

Создать резервную копию базы данных:

mysqldump -u db_user -p dbname > dbname.sql

Восстановление базы данных из резервной копии:

mysql -u db_user -p dbname < dbname.sql

То же самое можно сделать с конкретной таблицей:

mysqldump -u db_user -p dbname tablename > tablename.sql
mysql -u db_user -p dbname < tablename.sql

Если вам действительно нужно выполнить import в PHP , попробуйте добавить следующую строку в начале сценария php. Возможно, ваш php-скрипт прерван из-за отсутствия вывода в течение длительного времени:

ignore_user_abort(true);

Вы также можете отключить ограничение времени выполнения для запуска скрипта, если это необходимо:

ini_set('max_execution_time', 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...