Verrouillage indexeur programme
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.
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();