PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   MySQL-Abfrage beendet, aber PHP merkt es nicht (http://www.selfphp.de/forum/showthread.php?t=26044)

Son Goku 10.08.2017 18:05:35

MySQL-Abfrage beendet, aber PHP merkt es nicht
 
Hallo

Ich haben einen Cronjob, der unter Anderem mehrere große und kleine Tabellen kopiert.
Dieser lief bisher ohne Probleme, soll aber nun auf einen anderen Server umziehen.

Die Tabellen werden mit dem Befehl "INSERT INTO ... SELECT" kopiert. Bei einigen größeren Tabellen bekomme ich allerdings nach 7278 bzw. 7001 Sekunden folgende Fehlermeldung:

Zitat:

Kopiere Tabelle xyz...PHP Warning: mysqli::query(): MySQL server has gone away in /pfad/zum/script.php on line 63

Warning: mysqli::query(): MySQL server has gone away in /pfad/zum/script.php on line 63
PHP Warning: mysqli::query(): Error reading result set's header in /pfad/zum/script.php on line 63

Warning: mysqli::query(): Error reading result set's header in /pfad/zum/script.php on line 63
Fertig! (7278 Sekunden)
Die Abfragen dauern aber je nur ca. 1200 Sekunden.
Danach stehen diese in der Proicesslist als "Sleep".

Im MySQL-Error-Log findet sich folgender Eintrag:

Zitat:

[Note] Aborted connection 35 to db: 'datenbankname' user: 'username' host: '127.0.0.1' (Got timeout reading communication packets)
Den Rest der Zeit passiert nix.

Ich hab schon die Option "max_allowed_packet" auf 256M erhöht (Einstellung bisheriger Server), ohne dass es funktioniert hat.

Für weitere Ideen und Vorschläge wäre ich dankbar.

sysop 11.08.2017 15:10:17

AW: MySQL-Abfrage beendet, aber PHP merkt es nicht
 
Zitat:

Got timeout reading....
Dein Problem ist nicht fehlender Speicher sonderen das Zeitlimit.
Eine Abfrage über 20 Minuten (1200 Sek) ist nichts, was man mit PHP erledigt.

Son Goku 11.08.2017 15:28:04

AW: MySQL-Abfrage beendet, aber PHP merkt es nicht
 
Die Abfrage ist eben Teil eines Cronjobs der Daten über PHP verarbeitet, diese in eine Tabelle schreibt und diese anschließend kopiert, damit die Inhalte weiter verarbeitet werden können.

Gegenüber Vorschlägen, wie man das anders/besser macht, bin ich nicht abgeneigt.

sysop 11.08.2017 16:34:31

AW: MySQL-Abfrage beendet, aber PHP merkt es nicht
 
20 Minuten ist zu viel, dafür ist PHP eigentlich nicht gemacht.
Ich würde das entweder aufteilen oder (so wäre das mein Weg) als sql-Script auf Shell-Ebene laufen lassen.

Alternativ, wenn es unbedingt PHP sein muss, kann man das in einer CLI aufrufen und dafür die php.ini entsprechend anpassen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:59:23 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.