Magento permite trabajar con grandes cantidades de datos, pero cuando la base de datos está sobrecargada éste se vuelve lento y pesado. Para evitar esto, Magento utiliza índices que resuelven problemas de este tipo.
Los índices son tablas de bases de datos adicionales que permiten organizar respuestas rápidas a partir de la base de datos. Es necesario actualizar los índices para eliminar aquellos elementos que ya no son necesarios. Esto se puede realizar desde el propio backend de administración de Magento (Admin-> Sistema-> Administración Índice), pero en ocasiones puede dar problemas.
Cuando se intenta realizar una reconstrución de índices desde el backend y este tiene muchos productos es posible que devuelva timeout y no termine la indexación, por lo que hay que realizarla de forma manual a través de la línea de comandos.
Magento tiene algunos scripts PHP que se pueden ejecutar desde la línea de comandos. Los scripts PHP ejecutados por CLI (Command Line Interface) no tienen restricciones de tiempo de ejecución, por lo que se pueden ahorrar tiempo y nervios. Estos scripts se almacenan en la raíz del Magento, en el directorio shell/, en el cual deberá localizar el script «indexer.php». Es posible que necesite cambiar la ruta absoluta del script para poder ejecutarlo por consola.
Por defecto los índices de Magento son:
- catalog_product_attribute Product Attributes
- catalog_product_price Product Prices
- catalog_url Catalog Url Rewrites
- catalog_product_flat Product Flat Data
- catalog_category_flat Category Flat Data
- catalog_category_product Category Products
- catalogsearch_fulltext Catalog Search Index
- cataloginventory_stock Stock status
Los comandos más utilizados para la reindexación desde la línea de comandos son:
Ver el estado de los índices:
php indexer.php --status
Comprobar las claves de los índices:
php indexer.php --info
Reindexar un solo índice:
php indexer.php --reindex [Index Option Code]
Reindexación de varios índices:
php indexer.php --reindex catalog_product_price,catalog_url,catalog_product_flat
Ejemplos:
Reindexación para reconstruir el índice catalog_product_price:
php indexer.php --reindex catalog_product_price
Reescribir índices para procesar urls:
php indexer.php --reindex catalog_url