Aggiornare gli indici di magento via shell
Magento è molto versatile e questa versatilità si paga in termini di risorse da allocare al vostro piano hosting o meglio al vostro server. Quando si registra un prodotto dentro l'area amministrativa di Magento indicando tutti i dettagli, Magento creerà molti records fra loro interconnessi usando degli indici per ricostruire le informazioni registrate.
Tale operazione, permette di avere un sistema "relazionale" di informazioni che consente la famosa versatilità del software Magento.
Ad ogni modifica dei dati presenti nel negozio, Magento richiede l'aggiornamento degli indici. Questa operazione indolore nel caso di piccoli negozi diventa un grande problema in negozi con centinaia o migliaia di prodotti a catalogo con diversi attributi che ne descrivono le caratteristiche.
Molti piani hosting condivisi non riescono a completare l'aggiornamento via browser perchè Magento ne assorbe tutte le risorse. Vi consigliamo di leggere uno dei nostri articoli sulle prestazioni di magento presente nel nostro WIKI e sull'ottimizzazione di un server dedicato o cloud al seguente link: http://www.shinesoftware.com/wiki/velocizzare-magento.html#.UQaftX1H-lj
In ogni caso il modo più veloce e con molte meno limitazioni legate al tempo ed alle risorse dedicate al web server è la Shell di linux. Avviando i seguenti comandi Magento aggiornerà gli attributi dei prodotti, il catalogo e tutti i riferimenti legati alle categorie ed agli url.
La Shell di linux non è accessibile a chiunque. La connessione alla Shell è consigliata solamente a chi conosce lo strumento poichè molto complessa e pericolosa. Proprio per questo motivo non è offerta nei piani hosting condivisi ma solamente nei piani cloud o nei server dedicati.
- all Reindicizza tutto
- catalog_product_attribute Attributi Prodotti
- catalog_product_price Prezzi Prodotti
- catalog_url Url Catalogo
- catalog_product_flat Dati prodotto Flat
- catalog_category_flat Categoria dati Flat
- catalog_category_product Prodotti Categoria
- catalogsearch_fulltext Indice ricerca catalogo
- cataloginventory_stock Stato Scorte
Avviare il comando:
php shell/indexer.php --reindex catalogsearch_fulltext
L'operazione richiederà il tempo necessario in base a molti fattori:
- Risorse allocate sul piano hosting
- Configurazione del database server
- Tipologia del servizio di hosting
Se non si desidera attendere il termine dell'operazione con la shell aperta in attesa di una risposta affermativa, è possibile eseguire l'operazione in background con la possibilità di chiudere la finestra della shell di linux. Ecco il comando:
nohup php shell/indexer.php --reindex catalogsearch_fulltext
&
In qualsiasi momento potete controllare l'output dell'operazione di reindicizzamento usando il seguente comando:
cat nohup.out
Al termine delle operazioni di reindicizzamento potrete cancellare il file nohup.out
Per un negozio con una sola Vista su un server dedicato (2,5Ghz QuadCore), l'operazione richiederà 0.003 minuti per prodotto durante l'indicizzazione della tabella fulltext. Quindi considerando un negozio con circa 200.000 articoli (SKU) in una sola Vista avremo la seguente formula:
200.000 (sku) * 0.003 (tempo per prodotto) * 1 (vista) * 60 = 36000 secondi (10 ore)
Questo significa che eseguire il comando via browser, tramite il pannello di controllo di magento, risulterà essere inutile.
Una soluzione che aiuta il processo ad essere un pò più veloce potrebbe essere la cancellazione dei dati presenti nella tabella catalogsearch_fulltext usando il seguente comando via phpMyAdmin:
truncate catalogsearch_fulltext;
Dopo aver pulito la tabella su indicata eseguiremo il reindicizzamento dei dati usando la shell SSH a vostra disposizione:
# nohup php shell/indexer.php --reindex catalogsearch_fulltext &