0

PHP: максимальное время выполнения при импорте .SQL файла данных

26

Я пытаюсь импортировать большой .sql файл данных с помощью phpMyAdmin в XAMPP. Однако это занимает много времени, и я постоянно получаю ошибку:

Fatal error: Maximum execution time of 300 seconds exceeded in C:\xampp\phpMyAdmin\libraries\dbi\DBIMysqli.class.php on line 285

Размер файла составляет около 30 МБ, и он содержит около 1,2 миллиона строк, так что он не кажется слишком большим. Я не совсем понимаю, почему процесс занимает так много времени.

Вот часть конфигурации php.ini в XAMPP:

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
max_execution_time=30000

; Maximum amount of time each script may spend parsing request data.
max_input_time=60

; Maximum memory a script may consume (128MB)
memory_limit=200M

Несмотря на то, что я установил max_execution_time на 30000, я все равно получаю ошибку о превышении максимального времени выполнения в 300 секунд.

Как я могу решить эту проблему и успешно импортировать файл?

5 ответ(ов)

0

В директории phpMyAdmin есть переменная конфигурации, которую вы можете найти в файле phpmyadmin/config.inc.php, под названием $cfg['ExecTimeLimit']. Вы можете установить её значение в соответствии с необходимым вам максимальным временем выполнения.

0

Чтобы настроить только 3 параметра в файле php.ini вашего сервера, выполните следующие шаги:

  1. Установите max_execution_time = 3000000 (Задайте значение в соответствии с вашими требованиями).

  2. Установите post_max_size = 4096M.

  3. Установите upload_max_filesize = 4096M.

После этого не забудьте отредактировать файл C:\xampp\phpMyAdmin\libraries\config.default.php, добавив следующую строку:

$cfg['ExecTimeLimit'] = 0;

После всех изменений перезапустите сервер и снова попробуйте импортировать вашу базу данных.

Готово!

0

Когда вы пытаетесь импортировать большой набор данных через веб-интерфейс, может возникнуть проблема с превышением лимита времени выполнения скрипта PHP. По умолчанию скрипты PHP, запущенные в контексте веб-сервера, имеют этот лимит, чтобы избежать ситуации, когда один проблемный скрипт забивает сервер и приводит к отказу в обслуживании.

По этой причине ваш импорт, скорее всего, не проходит. PHPMyAdmin — это веб-приложение, которое сталкивается с ограничениями, установленными PHP.

Вы можете попробовать увеличить этот лимит, но это плохая идея, так как он существует по веской причине. Запуск скрипта, который требует много времени для выполнения, на веб-сервере — это довольно рискованное решение.

PHPMyAdmin не предназначен для выполнения тяжелых задач вроде этой — он больше подходит для рутинных операций и устранения неполадок.

Лучший вариант — использовать специальные инструменты для этой задачи, например, командные инструменты MySQL. Если ваш файл представляет собой дамп SQL, попробуйте выполнить следующую команду в терминале:

mysql -u(ваше имя пользователя) -p(ваш пароль) -h(имя вашего SQL-сервера) (имя базы данных) < /путь/к/вашему/sql/дампу.sql

Если вам некомфортно работать с командной строкой, подойдут такие инструменты, как SQLYog (для Windows), Sequel Pro (для Mac) и другие, которые могут быть более подходящими для выполнения импортных операций.

0

Эта инструкция сработала для меня. Если вы столкнулись с ошибкой "Maximum execution time of 300 seconds exceeded" в файле DBIMysqli.class.php, откройте следующий файл в текстовом редакторе:

C:\xampp\phpMyAdmin\libraries\config.default.php

Затем найдите следующую строку:

$cfg['ExecTimeLimit'] = 300;

И измените значение 300 на 900.

Дополнительную информацию можно найти по этой ссылке: Surya2in1 блог.

0

Чтобы устранить проблему с максимальным временем выполнения скриптов в phpMyAdmin, просто установите следующее значение в файле xamp/phpMyAdmin/libraries/config.default.php:

$cfg['ExecTimeLimit'] = 0;

Значение 0 означает, что ограничение по времени выполнения отсутствует.

Также внесите следующие изменения в файл php.ini, чтобы настроить размер файлов:

post_max_size = 600M 
upload_max_filesize = 500M 
max_execution_time = 5000 
max_input_time = 5000 
memory_limit = 600M

Обратите внимание, что значения post_max_size и memory_limit должны быть больше, чем значение upload_max_filesize.

Важно: Не забудьте перезапустить сервер после внесения изменений!

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь