De foutmelding is vrij duidelijk en wijst je op wat het probleem is:de beperking van de uitvoeringstijd in je php-omgeving. Sommige benaderingen om dit op te lossen liggen dus voor de hand:
- verhoog de tijdslimiet van uw omgeving
U kunt dat doen door de limiet in uw php-configuratie te verhogen of, indien toegestaan, door deze dynamisch te verhogen in uw importscript. Dus zoiets als ini_set('max_execution_time', 3000)
. Beide opties zijn gedocumenteerd. De php-documentatie moet altijd de eerste plek zijn waar je op zoek moet gaan naar een antwoord op zo'n vraag.
- gebruik een andere php-omgeving
Meestal wordt een dergelijke beperking gekozen voor een webomgeving om de risico's van het bedienen van verzoeken van iedereen die er is te verminderen. Er is echter niets tegen het gebruik van een andere configuratie voor een andere omgeving. Importtaken zijn doorgaans niet verwerkt met behulp van webverzoeken, maar met behulp van php in de opdrachtregel (CLI). Hiervoor wordt typisch een aparte configuratie gebruikt. Nogmaals, dit is gedocumenteerd. Dat is wat u hier kunt gebruiken om beide omgevingen verschillend van elkaar te configureren volgens uw behoeften. Hiervoor heeft u echter toegang tot php op CLI nodig. Op je eigen systeem is dat geen probleem, maar op een goedkope webhostingservice meestal niet.
- verdeel uw import in kleinere stukken
Aangezien de gegevens die u importeert, worden opgeslagen in een sql-bestand, dus een eenvoudig tekstbestand, kunt u elke gewone teksteditor gebruiken om dat bestand te wijzigen. Opmerking:een teksteditor, niet een tekstverwerker. Je kunt de grote INSERT
. splitsen verklaring daarin in verschillende stukken. De syntaxis is vrij duidelijk.
- gebruik veel afzonderlijke insert-statements in plaats van één grote
Afhankelijk van de tool die je gebruikt om dat dumpbestand te maken dat je probeert te importeren, heb je nu een optie om de dump zo te maken dat het veel afzonderlijke INSERT
gebruikt uitspraken (één voor elke rij) in plaats van één grote, gecombineerde. mysqldump
biedt bijvoorbeeld de --skip-extended-insert
vlag hiervoor. Met zo'n dumpbestand is het triviaal om de import op te splitsen in meerdere kleinere brokken door het bestand eenvoudig te splitsen.
- omzeil php voor het importeren helemaal
Als u directe toegang heeft tot uw databaseserver (MySQL in dit geval), dan kunt u er gewoon rechtstreeks mee communiceren in plaats van de phpMyAdmin
te gebruiken gereedschap ertussen. U kunt uw dumpfile eenvoudig rechtstreeks laden door middel van MySQLs source
opdracht. Op die manier bent u volledig onafhankelijk van de php-beperkingen.