Question

J'ai essayé de verrouillage mon indexeur programme avec ce code comme je l'habitude de faire:

$indexer = Mage::getSingleton('index/indexer');
            $indexer->lockIndexer();

Je remarque que mon indexeur ne se verrouillé et quand je suis allé chercher dans les fichiers de base je l'ai vu a été dépréciée. Est-il un autre moyen de verrouiller l'indexeur? Je regardais en elle et ne voit pas exactement un.

Était-ce utile?

La solution

Vous pouvez tout simplement touch le fichier de verrouillage.

<?php touch('BP.DS.'var'.DS.'locks'.DS.'index_process_1.lock')

ou

#!/bin/bash
touch /home/path/public_html/var/locks/index_process_1.lock

Ceci est évidemment une solution de faible qualité -. Mais si vous vouliez effectuer cette action périphériquement Magento (. Par exemple à partir d'un script bash, il serait approprié)


Dans le cas contraire, les méthodes dont vous avez besoin sont Mage_Index_Model_Process

Tels que isLocked(), lockAndBlock() et unlock()

En supposant que votre module étend ladite classe, vous devez seulement déclarer

const PROCESS_ID = 'my_indexer'

Et utiliser les méthodes selon le cas

$this->lockAndBlock();

Autres conseils

Vous pouvez verrouiller chaque processus d'index individuellement:

Mage::getModel('index/process')->load(x)->lock();
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top