Skip to content

Instantly share code, notes, and snippets.

@opensourcelib
Created January 18, 2016 14:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save opensourcelib/42d85c5c18ff75f0ba35 to your computer and use it in GitHub Desktop.
Save opensourcelib/42d85c5c18ff75f0ba35 to your computer and use it in GitHub Desktop.
<?php
class Lockmagentoprocess
{
/**
* Our process ID.
*/
const PROCESS_ID = 'ProcessId';
/**
* Mage_Index_Model_Process will provide us a lock file API.
*
* @var Mage_Index_Model_Process $indexProcess
*/
private $indexProcess;
/**
* Constructor. Instantiate the Process model, and set our custom
* batch process ID.
*/
public function __construct()
{
$this->indexProcess = new Mage_Index_Model_Process();
$this->indexProcess->setId(self::PROCESS_ID);
}
/**
* Process all the things!
*/
public function changeEverything()
{
if ($this->indexProcess->isLocked())
{
$this->log(sprintf("Another %s process is running! Abort", self::PROCESS_ID));
return false;
}
// Set an exclusive lock.
$this->indexProcess->lockAndBlock();
$this->log("Starting...hold on to your hats.");
for ($i = 1; $i < 1000; $i++)
{
// Do something complicated with $i.
}
$this->log("Finished! Whew.");
// Remove the lock.
$this->indexProcess->unlock();
return true;
}
/**
* Log a message to stdout.
*
* @param $msg
*/
public function log($msg)
{
echo $msg . PHP_EOL;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment