Frage PHP: maximale Ausführungszeit beim Importieren der .SQL-Datendatei


Ich versuche, eine große .SQL-Datei mit phpMyAdmin in XAMPP zu importieren. Das kostet jedoch viel Zeit und ich bekomme immer wieder:

Schwerwiegender Fehler: Die maximale Ausführungszeit von 300 Sekunden wurde in C: \ xampp \ phpMyAdmin \ libraries \ dbi \ DBIMysqli.class.php in Zeile 285 überschritten

Und die Datei ist etwa 1,2 Millionen Zeilen lang.

Die Datei ist ungefähr 30 MB groß, also ist sie nicht so groß. Ich verstehe nicht wirklich, warum es so lange dauert.

;;;;;;;;;;;;;;;;;;;
; 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

Das ist die Konfigurationsdatei für php.ini in xampp, aus irgendeinem Grund bekomme ich immer noch

Schwerwiegender Fehler: Die maximale Ausführungszeit von 300 Sekunden wurde in C: \ xampp \ phpMyAdmin \ libraries \ dbi \ DBIMysqli.class.php in Zeile 285 überschritten.


26
2018-04-02 16:33


Ursprung


Antworten:


Es gibt eine Konfigurationsvariable innerhalb des phpMyAdmin-Verzeichnisses, in dem Sie finden können libraries\config.default.php namens $cfg['ExecTimeLimit'] dass Sie die maximale Ausführungszeit festlegen können, die Sie benötigen.


39
2018-06-02 00:08



Nun, um dies zu beseitigen, müssen Sie die Variable phpMyadmin entweder auf 0 setzen, die unbegrenzt ist, oder auf den Wert in Sekunden, den Sie für Ihre Bedürfnisse benötigen. Oder Sie könnten CLI (Befehlszeilenschnittstelle) immer verwenden, um nicht einmal solche Fehler zu bekommen (für die Sie sich interessieren würden) dieser Link.

Nun zu dem Fehler, zuerst auf der sicheren Seite, stellen Sie sicher, dass Sie PHP-Parameter richtig eingestellt haben, so dass Sie große Dateien hochladen können und maximale Ausführungszeit von diesem Ende verwenden können. Wenn nicht, gehen Sie weiter und setzen Sie drei Parameter aus der Datei php.ini

  1. max_execution_time = 3000000 (Legen Sie dies gemäß Ihrer Anforderung fest)
  2. post_max_size = 4096M
  3. upload_max_filesize = 4096M

Sobald das erledigt ist, gehen Sie zurück zur phpMyadmin Konfigurationsdatei mit dem Namen "config.default.php". Auf XAMPP finden Sie es unter "C: \ xampp \ phpMyAdmin \ libraries" Ordner. Öffnen Sie die aufgerufene Datei config.default.php und stellen:

$cfg['ExecTimeLimit'] = 0;

Einmal eingestellt, starte deinen MySQL und Apache neu und importiere deine Datenbank.

Genießen... :)


16
2017-09-13 04:49



Sie versuchen, einen großen Datensatz über eine Webschnittstelle zu importieren.

Standardmäßig haben PHP-Skripte, die im Kontext eines Webservers ausgeführt werden, ein maximales Ausführungszeitlimit, weil Sie nicht wollen, dass ein einziges fehlerhaftes PHP-Skript den gesamten Server bindet und einen Denial-of-Service verursacht.

Aus diesem Grund ist Ihr Import fehlgeschlagen. PHPMyAdmin ist eine Webanwendung und erreicht das von PHP auferlegte Limit.

Sie könnten versuchen, das Limit zu erhöhen, aber dieses Limit existiert aus einem guten Grund, also ist das nicht ratsam. Das Ausführen eines Skripts, das sehr lange dauern wird, um auf einem Webserver ausgeführt zu werden, ist eine sehr schlechte Idee.

PHPMyAdmin ist nicht wirklich für schwere Aufgaben wie diese gedacht, es ist für alltägliche Aufgaben und Fehlersuche gedacht.

Ihre beste Option ist es, die richtigen Tools für den Job zu verwenden, z. B. die mysql-Befehlszeilentools. Angenommen, Ihre Datei ist ein SQL-Dump, dann können Sie versuchen, Folgendes über die Befehlszeile auszuführen:

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

Oder wenn Sie mit Kommandozeilen-Tools nicht vertraut sind, dann ist etwas wie SQLYog (für Windows), Sequel Pro (für Mac), etc. besser geeignet, um einen Import-Job auszuführen


5
2017-08-11 10:16



Das hat für mich funktioniert. Wenn Sie Maximale Ausführungszeit 300 in überschritten haben DBIMysqli.class.php Datei. Öffnen Sie die folgende Datei im Texteditor C:\xampp\phpMyAdmin\libraries\config.default.php dann suche die folgende Codezeile:

$cfg[‘ExecTimeLimit’] = 300;

und ändere den Wert 300 zu 900.

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


3
2017-07-14 13:42



Ist es eine .sql Datei oder ist es komprimiert (.zip, .gz, etc)? Komprimierte Formate benötigen manchmal mehr PHP-Ressourcen, so dass Sie versuchen könnten, sie vor dem Hochladen zu dekomprimieren.

Es gibt jedoch auch andere Methoden, die Sie ausprobieren können. Wenn Sie über Befehlszeilenzugriff verfügen, laden Sie die Datei einfach hoch und importieren Sie sie mit dem Befehlszeilenclient mysql (einmal im mysql> prompt, use databasename; dann source file.sql).

Andernfalls können Sie die "UploadDir" -Funktion von phpMyAdmin verwenden, um die Datei auf dem Server zu speichern und sie in phpMyAdmin erscheinen zu lassen, ohne sie auch von Ihrem lokalen Rechner hochladen zu müssen.

Dieser Link hat Informationen zur Verwendung von UploadDir und dieses hat einige Tipps und Methoden.


1
2018-04-03 14:11



du musst dich ändern php_admin_value max_execution_time in deiner Alias-Konfiguration (\XAMPP\alias\phpmyadmin.conf)

Antwort ist hier: WAMPServer phpMyadmin Maximale Ausführungszeit von 360 Sekunden überschritten


1
2017-07-02 06:54



Nachdem ich viele Dinge ohne Erfolg ausprobiert hatte, gelang es mir, SSH-Zugriff auf den Server zu erhalten und meine 80 MB-Datenbank mit einer Befehlszeile anstelle von phpMyAdmin zu importieren. Hier ist der Befehl:

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

Es ist viel einfacher, große Datenbanken zu importieren, wenn Sie xammm auf Windows ausführen, den Pfad für mysql.exe ist C:\xampp\mysql\bin\mysql.exe


0
2018-02-07 11:38