it-swarm.com.ru

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

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

Неустранимая ошибка: максимальное время выполнения 300 секунд превышено в C:\xampp\phpMyAdmin\library\dbi\DBIMysqli.class.php в строке 285

И файл имеет длину около 1,2 миллиона строк.

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

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

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time=30000

; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://php.net/max-input-time
max_input_time=60

; Maximum input variable nesting level
; http://php.net/max-input-nesting-level
;max_input_nesting_level = 64

; How many GET/POST/COOKIE input variables may be accepted
; max_input_vars = 1000

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit=200M

Это файл конфигурации для php.ini в xampp, по какой-то причине я все еще получаю 

Неустранимая ошибка: максимальное время выполнения 300 секунд превышено в C:\xampp\phpMyAdmin\library\dbi\DBIMysqli.class.php в строке 285.

28
EssexPN

В каталоге phpMyAdmin есть переменная конфигурации, которую вы можете найти в libraries\config.default.php с именем $cfg['ExecTimeLimit'], для которой вы можете установить любое максимальное время выполнения, которое вам нужно.

43
Randell

Ну, чтобы избавиться от этого, вам нужно установить для переменной phpMyadmin значение 0, которое не ограничено, или значение в секундах, которое вы считаете подходящим для ваших нужд. Или вы всегда можете использовать CLI (интерфейс командной строки), чтобы даже не получать такие ошибки (для которых вы хотели бы взглянуть на эту ссылку .

Теперь об ошибке здесь, во-первых, убедитесь, что вы правильно установили параметры PHP, чтобы вы могли загружать большие файлы и использовать максимальное время выполнения с этой стороны. Если нет, то установите ниже три параметра из файла php.ini,

  1. max_execution_time = 3000000 (установите согласно вашему требованию)
  2. post_max_size = 4096M
  3. upload_max_filesize = 4096M

Как только это будет сделано, вернитесь к поиску файла конфигурации phpMyadmin с именем что-то вроде «config.default.php». На XAMPP вы найдете его в папке «C:\xampp\phpMyAdmin\library». Откройте файл с именем config.default.php и установите:

$cfg['ExecTimeLimit'] = 0;

После установки перезапустите MySQL и Apache и выполните импорт базы данных.

Наслаждаться... :)

19
Umesh Patil

Вы пытаетесь импортировать огромный набор данных через веб-интерфейс. 

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

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

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

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

Лучшим вариантом для вас является использование подходящих инструментов для работы, таких как инструменты командной строки mysql. Предполагая, что ваш файл является дампом SQL, вы можете попробовать выполнить следующее из командной строки:

mysql -u(your user name here) -p(your password here) -h(your sql server name here) (db name here) < /path/to/your/sql/dump.sql

Или, если вам не нравятся инструменты командной строки, тогда что-то вроде SQLYog (для Windows), Sequel Pro (для Mac) и т.д. Может быть более подходящим для запуска задания импорта

5
GordonM

Это сработало для меня . Если вы получили Максимальное время выполнения 300 превышено в файле DBIMysqli.class.php. Откройте следующий файл в текстовом редакторе C:\xampp\phpMyAdmin\libraries\config.default.php thensearch следующая строка кода:

$cfg[‘ExecTimeLimit’] = 300;

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

https://surya2in1.wordpress.com/2015/07/28/fatal-error-maximum-execution-time-of-300-seconds-exceeded/

4
William

Это файл .sql или он сжат (.zip, .gz и т.д.)? Сжатые форматы иногда требуют больше ресурсов PHP, поэтому вы можете попробовать распаковать их перед загрузкой.

Однако есть и другие способы, которые вы можете попробовать. Если у вас есть доступ из командной строки, просто загрузите файл и импортируйте его с помощью клиента командной строки mysql (один раз при запросе mysql>, use databasename;, затем source file.sql).

В противном случае вы можете использовать функцию phpMyAdmin «UploadDir», чтобы поместить файл на сервер и отобразить его в phpMyAdmin, не загружая его также с локального компьютера.

Эта ссылка содержит информацию об использовании UploadDir и эта имеет еще несколько советов и методов.

1
Isaac Bennetch

вы должны изменить php_admin_value max_execution_time в вашей конфигурации псевдонима (\XAMPP\alias\phpmyadmin.conf)

ответ здесь: WAMPServer phpMyadmin Превышено максимальное время выполнения 360 секунд

1
mp.hamid

После многих неудачных попыток мне удалось получить SSH-доступ к серверу и импортировать базу данных объемом 80 МБ с помощью командной строки вместо phpMyAdmin. Вот команда:

mysql -u root -p -D mydatabase -o < mydatabase.sql

Импортировать большие базы данных намного проще, если вы запускаете xammp в Windows, путь к mysql.exe равен C:\xampp\mysql\bin\mysql.exe

0
Toni Almeida