Roky provozu, spadlé importy a mazání produktů po sobě nechávají na disku tisíce obrázků, které už nikam nepatří – a v databázi záznamy o obrázcích, které dávno neexistují. Modul obojí najde, ukáže vám kompletní report a po vašem potvrzení uklidí. Zvládne i půl milionu obrázků, běží v dávkách na jakémkoliv hostingu a kdykoliv ho můžete přerušit.
Kód:
Verze modulu: 5.0.0
Kompatibilita: 1.7, 9, 8
Adresář img/ roste roky a nikdy se sám neuklidí. Smažete produkt, ale jeho obrázky na disku zůstanou. Spadne import v půlce a nechá po sobě soubory bez záznamu – nebo naopak záznamy bez souborů. Přemigrujete e-shop a zbydou adresáře k ID, která už neexistují. Nic z toho e-shop nezobrazuje, nikdo o tom neví, ale platíte za to místo na disku a zálohy se protahují.
Tenhle modul projde skutečné soubory na disku, porovná je s databází v obou směrech a přesně vám řekne, co je k ničemu.
[SCREEN 1: Konzole čištění – běžící analýza s ukazatelem, počítadly a výpisem nálezů]
id_image, ale soubor chybí. Typicky po chybě při importu. Modul takový záznam smaže a u produktu zároveň dopočítá hlavní obrázek, aby nezůstal bez náhledu v katalogu.index.php nebo informační soubor. Modul je uklidí až nakonec, když jsou obrázky pryč.Modul nikdy nemaže rovnou. Nejprve proběhne analýza, která si zapíše konkrétní seznam akcí, a vy dostanete kompletní report: co, kde, jak velké a proč. Teprve když ho potvrdíte, začne úklid – a ten už jen přehrává hotový seznam, takže disk znovu neprochází.
Report si můžete filtrovat podle typu nálezu i stavu a celý ho vyexportovat do CSV.
[SCREEN 2: Report čištění – filtrovaný výpis nálezů s cestami, velikostmi a stavy]
Každý běh úklidu odloží smazané soubory do ZIP archivu se zachovanou strukturou cest a přibalí k nim restore.sql se smazanými záznamy včetně původních hlavních obrázků a pozic. Kdyby se něco nepovedlo, obnova je rozbalit archiv do img/ a pustit SQL skript.
Až archiv nebudete potřebovat, smažete ho jedním klikem přímo v administraci – na rozdíl od karantény vám nesedí na disku natrvalo.
Půl milionu obrázků není problém. Modul nepotřebuje cron, SSH ani zvýšený max_execution_time:
[SCREEN 3: Výběr rozsahu – produkty, kategorie, výrobci, dodavatelé před spuštěním]
Úklid velkého e-shopu nemusíte odsedět. Dáte Pozastavit a běh se zastaví v konzistentním bodě – rozdělaná akce vždy doběhne, takže disk nezůstane v půli cesty. Až se vrátíte, dáte Pokračovat a naváže přesně tam, kde skončil. Chcete začít znovu od nuly? Reset.
Nástroj, který maže, musí být konzervativní. Proto:
img/. Každá cesta se kontroluje proti kořeni obrázků.| Typ obrázků | Umístění | Co řeší |
|---|---|---|
| Produkty | img/p | soubory, záznamy, hlavní obrázek, adresáře |
| Kategorie | img/c | soubory bez kategorie |
| Výrobci | img/m | soubory bez výrobce |
| Dodavatelé | img/su | soubory bez dodavatele |
Čištění obrázků je první nástroj v sekci Servisní nástroje. Sekce je založená jako rozcestník, takže další údržbové nástroje přibudou jako další karta – bez přestavby toho, co už používáte.
Parametry modulu
Komentáře k modulům mohou psát jen registrovaní uživatelé. Recenze jsou schvalovány a ověřovány administrátorem e-shopu.
Žádný názor zákazník pro tuto chvíli.
Novou verzi modulu stáhnete ve svém účtu v sekci Moduly a licence a nahrajete ji v administraci přes Moduly → Přidat nový modul. Stará verze se přepíše a data zůstanou zachována – modul předem neodinstalovávejte. Aktualizace jsou zdarma rok od nákupu.
V administraci otevřete Moduly a služby → Přidat nový modul, vyberete ZIP soubor modulu a kliknete na Nahrát. Poté modul v seznamu najdete a stisknete Instalovat. Nahrát jej lze i přes FTP do složky modules, bezpečnější je ale instalace přes administraci.
Modul přeložíte přímo v administraci: v seznamu modulů zvolíte u modulu možnost Přeložit, vyberete cílový jazyk, texty upravíte a uložíte. Pokud modul obsahuje vlastní e-maily, nakopírujte navíc přes FTP jazykové šablony e-mailů podle návodu.
V administraci v sekci Rozšířené parametry / Nástroje obrázků / Servisní nástroje, kde je karta Čištění obrázků. Zapnutí modulu a licenci najdete jako u ostatních našich modulů v Moduly / Konfigurovat.
Modul maže jen to, co e-shop stejně nikde nezobrazuje – soubor, na který neukazuje žádný záznam v databázi, nebo záznam, ke kterému chybí soubor. Navíc:
Každý běh úklidu vytvoří ZIP archiv. Najdete ho v reportu v sekci Záložní archivy a stáhnete. Uvnitř jsou:
img/,restore.sql se smazanými záznamy včetně původních hlavních obrázků a pozic – pustíte ho nad databází e-shopu.Archiv se nemaže sám – zabírá místo na disku, takže ho po ověření smažte tlačítkem v administraci.
Ano, na to je stavěný. Neprochází disk ani databázi celou do paměti: adresáře se ověřují po dávkách jedním dotazem a databáze se prochází klíčem, ne stránkováním. Práci řídí prohlížeč po dávkách, takže PHP nikdy neběží déle než pár vteřin vkuse.
Ne. Všechno běží z administrace v prohlížeči. Každá dávka dostane časový rozpočet místo pevného počtu položek – na pomalém hostingu udělá menší dávku a nespadne na max_execution_time, na rychlém udělá větší. Není potřeba nic navyšovat.
Jedinou volitelnou závislostí je PHP rozšíření ZipArchive pro zálohy. Když na hostingu chybí, modul vás na to upozorní před spuštěním – čištění pak funguje, ale bez záložního archivu.
Nemusíte. Kdykoliv dáte Pozastavit; běh se zastaví v konzistentním bodě (rozdělaná akce vždy doběhne) a pozice se uloží. Až se vrátíte, dáte Pokračovat a naváže tam, kde skončil. Reset zahodí analýzu a další běh začne od začátku.
Kdyby vypadlo spojení nebo zavřete prohlížeč, nic se neztratí – pozice je v databázi, ne v prohlížeči.
Když se produktu smaže záznam obrázku, který byl označený jako hlavní, modul hlavní obrázek dopočítá – dostane ho ten zbylý obrázek s nejnižší pozicí. Když produktu nezbyde žádný obrázek, hlavní obrázek se jen zruší. Nastavuje se přitom v ps_image i ps_image_shop, aby produkt nezůstal v katalogu bez náhledu.
Mezi analýzou a úklidem mohl doběhnout import a nález zastarat. Modul proto každou položku těsně před smazáním znovu přeověří, a co mezitím ožilo, přeskočí. V reportu to najdete ve stavu Přeskočeno i s důvodem.
Ne, a modul to sám ohlídá. Běh je zamčený tokenem, takže druhé okno dostane hlášku, že čištění už běží jinde. Bez toho by si dvě smyčky braly stejnou práci a přepisovaly si pozici.
Adresář k neexistujícímu ID jde pryč celý – nejdřív se všechno, co v něm leží (obrázky i cizí soubory), zálohuje do ZIP archivu a smaže, nakonec zmizí i adresář sám. V reportu je každý soubor uvedený zvlášť. Adresář zůstane jen tehdy, když v něm žije obrázek s delším ID (např. adresář 1/2 kryje obrázek 123 v podadresáři) – pak je v reportu poznámka adresář není prázdný.
PrestaShop ukládá obrázek 123 do img/p/1/2/3/123.jpg – cesta z číslic je přímo ID obrázku. Když někde leží obrázek s číslem, které neodpovídá své cestě, e-shop ho odtamtud nikdy nenačte. Vzniká to po chybných migracích a je to sirotek, i když samotné ID v databázi existuje.
Ano. Obrázky jsou v PrestaShopu společné pro celý multistore, takže čištění se spouští jednou a platí pro všechny obchody. Chování licence je stejné jako u ostatních našich modulů.
Ano. Před spuštěním zaškrtnete, co se má kontrolovat – produkty, kategorie, výrobce, dodavatele, nebo jen některé z nich.
Celkový počet je odhad – přesně by se spočítat nedal, aniž by se disk prošel dvakrát, což by čekání zdvojnásobilo. Ukazatel je proto orientační a modul to u něj i píše. Přesná čísla najdete v počítadlech a v reportu.
Zátěž je rozprostřená do krátkých dávek a mezi nimi má server volno, takže běžný provoz to nepoloží. Přesto doporučujeme pustit úklid mimo špičku – jde o operace nad diskem a mazání souborů.
Okamžitě ke stažení bez čekání
Zakoupené moduly máte automaticky k dispozici ihned po potvrzení platby.
Neomezená licence
Licenci k zakoupenému modulu máte udělenou bez časového omezení.
Vývoj s historií
od roku 2010 aktivně programuji pro platformu PrestaShop.
Telefonická i e-mailová podpora
Ke každému nákupu máte k dispozici podporu přímo od autora.
© 2015 - 2026 David Mrózek, Horní Bludovice 251, 739 37 Horní Bludovice, IČ: 70624569, DIČ: CZ7908015126
