2012-06-20 25 views
10

estoy jugando con la mejora del rendimiento durante la grabación de categoría y me encontré con que una vez que se actualiza la categoría a través de Magenti API o back-end a continuación, la siguiente consulta de actualización se llama¿Cuál es la tabla index_event de Magento

SQL: UPDATE `index_event` SET `event_id` = ?, `type` = ?, `entity` = ?, `entity_pk` = ?, `created_at` = ?, `old_data` = ?, `new_data` = ? WHERE (event_id='13066') 
BIND: Array 
(
    [0] => 13066 
    [1] => save 
    [2] => catalog_category 
    [3] => 2867 
    [4] => 2011-09-22 13:50:54 
    [5] => a:4:{s:30:"Mage_Catalog_Model_Indexer_Url";N;s:40:"Mage_Catalog_Model_Category_Indexer_Flat";N;s:43:"Mage_Catalog_Model_Category_Indexer_Product";N;s:41:"Mage_CatalogSearch_Model_Indexer_Fulltext";N;} 
    [6] => a:11:{s:35:"cataloginventory_stock_match_result";b:0;s:34:"catalog_product_price_match_result";b:0;s:24:"catalog_url_match_result";b:1;s:30:"Mage_Catalog_Model_Indexer_Url";N;s:33:"catalog_product_flat_match_result";b:0;s:34:"catalog_category_flat_match_result";b:1;s:40:"Mage_Catalog_Model_Category_Indexer_Flat";N;s:37:"catalog_category_product_match_result";b:1;s:43:"Mage_Catalog_Model_Category_Indexer_Product";N;s:35:"catalogsearch_fulltext_match_result";b:1;s:41:"Mage_CatalogSearch_Model_Indexer_Fulltext";N;} 

¿Puede alguien decirme qué ¿Significa y sucederá? Parece que algunas acciones de indexación se envían a una cola, pero ¿cuándo se ejecuta?

Respuesta

17

Su hipótesis "Parece que algunas acciones de indexación se insertan en una cola" es correcto.

Para responder a su pregunta "¿pero cuándo se ejecuta?":

Algunos modelos de Magento, como

Mage_Core_Model_Store 
Mage_Catalog_Model_Product 
Mage_Catalog_Model_Category 
Mage_CatalogInventory_Model_Stock_Item 
Mage_Tag_Model_Tag 
Mage_Tag_Model_Tag_Relation 

por ejemplo, cola de sucesos de índice. Principalmente antes de borrar y/o después de cometer.

Lo hacen llamando al método logEvent() o al processEntityAction() de la clase Mage_Index_Model_Indexer.

  • Si llaman logEvent() directamente, sólo se pondrán en cola un evento de índice. Reindexing ni siquiera será probado.

  • Si llaman al processEntityAction(), también se pondrá en cola un evento de índice, pero Magento intentará procesar este evento de índice justo después de la cola.

También hay un tercer método llamado Mage_Index_Model_Indexer::indexEvents() llamado por algunos módulos. La diferencia con los dos anteriores es que indexEvents() hace no queue cualquier evento de índice, pero solo intentará reindexar inmediatamente.

Tenga en cuenta que cualquier reindexación a través de processEntityAction() y indexEvents() solo ocurrirá, si el modo de proceso del tipo de índice correspondiente es Mage_Index_Model_Process::MODE_REAL_TIME.

Puede verificarlo a través del System -> Index Management. Si la columna Mode lee Update on save, entonces ese índice está establecido en MODE_REAL_TIME.

Si lee Actualización manual en su lugar, está configurado en Mage_Index_Model_Process::MODE_MANUAL, lo que significa que la reindexación automática nunca ocurrirá.

En este último caso, debe activar manualmente los procesos de reindexación para volver a indexar sus datos. Eso se puede lograr usando varios métodos, p. usando System -> Index Management -> Index -> Reindex data -> Submit, o usando Magento shell/indexer.php en la línea de comandos, o escribiendo su propio proceso de recolección de procesos del indexador iniciado por un trabajo cron.

+0

¿Has oído hablar de modificaciones de magento que podrían permitir que las cosas se pusieran en cola y luego procesarlas a través del indexador de shell en un momento determinado? Los indexadores son un gran punto de dolor en nuestra tienda. – runamok

+0

Un poco de una publicación anterior, pero para cualquiera que esté buscando: hay complementos que retrasan la indexación para un momento posterior para acelerar las manipulaciones de producto/categoría del panel de administración. p.ej.[Reinsignificación asincrónica de Mirasvit] (http://mirasvit.com/magento-extensions/magento-asynchronous-reindex.html) – augsteyer

+0

muy bien explicado. –

Cuestiones relacionadas