Oplossing timeout bij WordPress Database upgrade 4.2.1 en 4.2.2

  • Berichtcategorie:Blog

Wij beheren een groot aantal WordPress websites en daar zitten een aantal websites bij met een gigantische database. Bij het upgraden naar WordPress 4.2.2. liepen wij dan ook bij deze grotere websites tegen een probleem aan : een timeout bij het upgrade van de database. Je krijg dan een error 500 en dat precies na 30, 60, 90 of 120 seconden, afhankelijk van je MySQL / PHP / Apache of NGINX intellingen. Wanneer je een upgrade naar 4.2.1 of 4.2.2 converteert WordPress de tabellen naar utf8mb4. Een tijdrovend proces, zeker bij een grote database.

De upgrade wordt aangeroepen op het moment dat je probeert in te loggen, je krijgt dan een volgend scherm te zien:

wordpres-4-2-db-upgrade
Normaal gesproken kan je gewoon klikken op Update WordPress database en je bent klaar. Maar in sommige gevallen duurt het erg lang en krijg je een timeout. Natuurlijk kan je dan de instellingen van de webserver tweaken maar wellicht heb je dat liever niet (dat begrijp ik).

Oplossing Loop Database Upgrade Noodzakelijk

Wat kan je dan wel doen? Het heeft ook mij enige moeite gekost om hier achter te komen maar dankzij een post op Foliovision.com is het me toch gelukt. Het is namelijk mogelijk om het een upgrade aan te roepen vanuit de shell. Ik had daar nooit over nagedacht, een erg creatieve oplossing. Op de volgende wijze gelden er geen restricties tot de execution time en kan WordPress rustig de upgrade uitvoeren. Ga in de shell (shh) naar het path van de wp-admin folder van jouw website : cd /www/vhosts/domeinnaam.com/httpdocs/wp-admin

Voer vervolgens het onderstaande commando uit (eventueel met sudo):

php5 -d display_errors=1 -r “; define(‘WP_USE_THEMES’,false); define(‘WP_CACHE’,false); \$_GET[‘step’] = 1; include ‘upgrade.php’;”

Even wachten… en de upgrade is gedaan!

QuickFix

As je dit allemaal te ingewikkeld vindt of de upgrade op een rustig tijdstip wil doorvoeren toch vast bijvoorbeeld plugin updates of content updates wilt doorvoeren dan kan je WordPress voorlopige nog even voor de gek houden. Je kan namelijk de db_version veranderen naar 31533 (dat is de versie van 4.2.2) en deze terugzetten naar een vorige versie om later alsnog de upgrade te doen. Wij adviseren wel de upgrade door te voeren om er zeker van te zijn dan toekomstige releases goed blijven werken. Deze QuickFix werkt waarschijnlijk niet meer over een paar maanden. Je doet dit via PHPmyAdmin of via de shell. De SQL query is : UPDATE wp_options SET option_value=31533 WHERE option_name=”db_version”;