Automatická aktualizace skončí na rozbalování aktualizačního balíčku

Nedávno jsem se setkal u jedné instalace WordPress se zajímavým problémem. Aktualizace pluginu se zastavila na rozbalování aktualizačního balíčku. Už jsem se tímto problémem setkal dříve, ovšem řešení tentokrát nebylo „standardní“.

Když dojde vyměřený čas

Automatická aktualizace probíhá na pozadí (backend). O aktuálním stavu se dozvídáte prostřednictvím javascriptu přes Ajax, který přenáší informace do administrace (frontend). Na celou akci má skript vymezený určitý čas. Buď je předem definován ve skriptu funkcí set_time_limit(). Anebo natvrdo v konfiguraci PHP v souboru php.ini (hledejte řádek s max_execution_time).

Respektive pokud máte sdílený webhosting, tak k php.ini nemáte přístup. Musíte tedy vzít za vděk tomu, co provozovatel nastavil. Většinou to bývá 30 vteřin. Dlouho běžící skripty, totiž vytěžují zbytečně serverové prostředky. Sdílený webhosting není od toho aby počítal PI 🙂 Kolik přesně máte zjistíte zavoláním funkce phpinfo().

Pokud tedy máte k dispozici 30 vteřin, tak se aktualizace na 30 vteřinách zasekne.

Nejčastěji za to může plugin

Za zaseknutou automatickou aktualizaci většinou může nějaký náročný plugin. Stačí tedy všechny vypnout a provést aktualizaci. Ideální je dozvědět se, který to dělá a nahradit jej funkční alternativou. Popřípadě zjistit proč to dělá a zajistit nápravu. Což je ale práce spíše pro vývojáře, i když někdy to může poukazovat na další problémy, jako je třeba přeplněná či poškozená tabulka v databázi.

Zkusit můžete i přepnout na základní šablonu.

Kde byl problém

Takže co se vlastně stalo. Bylo potřeba aktualizovat plugin u WordPress, který se však zasekával právě ve fázi rozbalování aktualizačního balíčku. Aktualizace jádra údajně proběhla v pořádku (nebyl to můj WordPress). Jeden plugin však dělal problém. Nějak jsme se nemohli dostat k žádnému kloudnému řešení. Nedávalo to moc smysl, co se vlastně seká. Po zaslání výstupu phpinfo() jsem doporučil přepnout z PHP 5.3 na nejnovější možnou PHP 5.6. Pak už jen kontaktovat zákaznickou podporu ať pošle error_log a access_log. Z těch se dá zjistit, kde by mohl být problém.

Zajímavé bylo, že právě přepnutí na PHP 5.6 to zabralo.

Popravdě z toho nejsem moc moudrý. O případu, kdy za problém s aktualizací, respektive rozbalováním mohla starší verze PHP jsem neslyšel. Škoda, že problém nejde zreplikovat.

Autor Ginoza

Pracuji na zákaznické podpoře jednoho známého webhostingu.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *