Motor és Működés

1-Click Upgrade – AutoUpgrade modul

1-Click Upgrade - AutoUpgrade modul

A cikk eredeti megjelenése: 2013. július 9. – a PrestaShop azóta sokat változott. Az elvek ma is hasznosak lehetnek, de a lépések a mai (8.x, 9.x) verzióknál eltérhetnek. Kérdezz bátran!

Prestashop és a „1-Click Upgrade – AutoUpgrade„ modul

Mikor megjelent az 1.5.0-ás verzió Prestashop-ból, kijött vele együtt a fent említett modul is. Ezentúl nem tudunk (hacsak nem kerülő utakon) a szokásos módszerekkel frissíteni, ezt a modult kell használnunk rá.

Ami alapból nem egy rossz dolog, sőt. Maga a modul elég jól meg van írva – ha szépen beállítunk mindent akkor teszi a dolgát, ITT írok a frissítési folyamatáról.

Viszont akad olyan hogy a modul frissítés közben (vagy még előtte) megmakacsolja magát. Olyan hibákat ír ki (ha kiír egyáltalán) amikre nem adnak orvosságot. Ilyen a méltán híres:

all files has been upgraded. Now upgrading database. this can take a while …

üzenet is, mely csak tölt és tölt és tölt egészen addig míg a szerver meg nem unja.

Viszont ha ráfrissítünk egy idő után akkor nyilvánvalóvá válik az a hibaüzenet mellyel semmit sem tudunk kezdeni:

[Ajax / Server Error for action upgradeDb] textStatus: "error " errorThrown:"Internal Server Error " jqXHR: " "

esetleg

[Ajax / Server Error] textStatus: "error" errorThrown:"" jqXHR: ""

Ezekkel tökéletesen semmit sem tudunk kezdeni. Rengeteg angol topic szól erről a hibaüzenetről, de én még megoldást nem találtam rá ezeken az oldalakon.

Ennek ellenére ezeket meg lehet próbálni:

  • indítsuk úgy a frissítést hogy nem készíttetünk vele semmilyen backupot
  • ha van hozzáférésünk akkor állítsuk több órára a szerver feldolgozási idejét (max_execution_time) és hagyjuk dolgozni. Bizonyos esetekben ez Nekem bevált.

Szerencsére ez elég ritkán fordul elő – viszont ha igen akkor megkeseríti az életünket. Amivel Én sikeresen „elhárítottam” ezt az nem más mint a próbálkozás. Amikor kiírta ezt a hibaüzenetet akkor egyszerűen a Vissza gombbal visszamentem és megint ráengedtem a frissítést. Ezt el kell vele játszani párszor, Nekem 4-szer kellett újraindítanom mire a végére ért és kiírta hogy készen van – vagy ráfrissít a végső verzióra és onnantól nem enged majd újból próbálkozni.

Ennek a modulnak a fenti címben lévő linkes elérhetőségén tudjuk ellenőrizni a jelenlegi verziószámát (bár a prestashop admin felülete is kiírja hogy van-e frissebb változat és lehet is frissíteni vele ha igen)  amit igencsak gyakran frissítenek. Az elmúlt 3 hétben háromszor is frissítésre került.

Előfordulhat, hogy egy bizonyos verziójú shopot nem lehet a legfrissebb modulverzióval frissíteni inkompatibilitás miatt. Viszont a modulba beépített ellenőrző figyeli hogy a legfrissebb verzióval rendelkezünk-e, és ha nem akkor nem engedi elvégezni a frissítést:

1 click to upgrade

Így ez patthelyzetté válik. A következőt lehet tenni: átírjuk ezt a részt kicsit.

Nyissuk meg a  /modules/autoupgrade/AdminSelfAutoupgrade.php -t, majd az 599-es sor körül keressük meg ezt a részt:

public function checkAutoupgradeLastVersion()
{
if ($this->getModuleVersion())
$this->lastAutoupgradeVersion = version_compare($this->module_version, $this->upgrader->autoupgrade_last_version, '>=');
else
$this->lastAutoupgradeVersion = true;
return $this->lastAutoupgradeVersion;
}

Itt deklarálják azt a függvényt ami a verziószámot ellenőrzi le. Nyilvánvalóan sok módszer létezik arra hogy ezt a függvényt úgy alakítsuk át hogy pipát adjon nekünk ajándékba az admin felületen, most csak egyet írnék:

$this->lastAutoupgradeVersion = version_compare($this->module_version, $this->upgrader->autoupgrade_last_version, '>=');

Ennek a sornak a végén lévő nagyobb relációs jelet  fordítsuk meg kicsire (<) és máris megváltoztattuk a feltételt.

Mentsünk majd frissítsünk egyet a modul beállításán és lám, máris megkaptuk a zöld pipánkat.

Esetleg megoldás lehet az a módszer is, amikor a modul config.xml fájljában egyszerűen átírjuk a verziószámot az általunk kívántra:
<version><![CDATA[1.1.7]]></version>

Ha kérdésed van ne habozz velem felvenni a kapcsolatot! 🙂

Eladásra fel! 🙂

Puizl Attila

PrestaShop fejlesztő · Hivatalos PrestaShop Nagykövet

17 éve készítek, fejlesztek és tartok karban PrestaShop webáruházakat. Több száz hazai és külföldi webshop viseli a kézjegyem, és 2010 óta segítek a magyar PrestaShop közösségben.

Bemutatkozás és ügyfélvélemények →

Szólj hozzá!

Az e-mail címed nem jelenik meg. A hozzászólások jóváhagyás után válnak láthatóvá. Részletek: Adatkezelési tájékoztató.