Съобщението за грешка е съвсем ясно и ви насочва към какъв е проблемът:ограничението на времето за изпълнение във вашата php среда. Така че някои подходи за решаване на това са очевидни:
- увеличете времевия лимит на вашата среда
Можете да направите това, като повишите ограничението във вашата php конфигурация или, ако е разрешено, като го увеличите динамично във вашия скрипт за импортиране. Така че нещо като ini_set('max_execution_time', 3000)
. И двата варианта са документирани. PHP документацията трябва винаги бъде първото място, където трябва да започнете да търсите отговор на такъв въпрос.
- използвайте различна php среда
Обикновено такова ограничение се избира за уеб среда, за да се намалят рисковете от обслужване на заявки от всеки там. Нищо обаче не говори против използването на различна конфигурация за друга среда. Задачите за импортиране обикновено не обработвани чрез използване на уеб заявки, но чрез използване на php в командния ред (CLI). За такива обикновено се използва отделна конфигурация. Отново това е документирано. Това е, което можете да използвате тук, за да конфигурирате двете среди различни една от друга според вашите нужди. За това обаче ви трябва достъп до php на CLI. Това не е проблем във вашата собствена система, но обикновено не е достъпно в евтина уеб хостинг услуга.
- разделете импортирането си на по-малки части
Тъй като данните, които импортирате, се съхраняват в sql файл, т.е. обикновен текстов файл, можете да използвате всеки обикновен текстов редактор, за да промените този файл. Забележка:текстов редактор, не текстообработваща програма. Можете да разделите големия INSERT
изявление, съдържащо се там на няколко части. Синтаксисът е доста очевиден.
- използвайте много отделни изрази за вмъкване вместо един голям
В зависимост от инструмента, който използвате, за да създадете дъмп файла, който се опитвате да импортирате, сега имате опция да създадете дъмп, така че да използва много отделни INSERT
изявления (по един за всеки ред) вместо един голям, комбиниран. mysqldump
например предлага --skip-extended-insert
флаг за това. С такъв дъмп файл е тривиално да разделите импортирането на няколко по-малки части, като просто разделите файла.
- заобиколете напълно php за импортиране
Ако имате директен достъп до вашия сървър на база данни (MySQL в този случай), тогава можете просто да взаимодействате директно с него, вместо да използвате phpMyAdmin
инструмент между тях. Можете просто да заредите вашия dumpfile директно чрез MySQLs source
команда. По този начин сте напълно независими от ограниченията на php.