Well the order of execution of your observer methods will be same as the order of loading of modules in Magento.
Check this piece of code,
#File: app/code/core/Mage/Core/Model/Config.php
protected function _getDeclaredModuleFiles()
{
$etcDir = $this->getOptions()->getEtcDir();
$moduleFiles = glob($etcDir . DS . 'modules' . DS . '*.xml');
if (!$moduleFiles) {
return false;
}
$collectModuleFiles = array(
'base' => array(),
'mage' => array(),
'custom' => array()
);
foreach ($moduleFiles as $v) {
$name = explode(DIRECTORY_SEPARATOR, $v);
$name = substr($name[count($name) - 1], 0, -4);
if ($name == 'Mage_All') {
$collectModuleFiles['base'][] = $v;
} else if (substr($name, 0, 5) == 'Mage_') {
$collectModuleFiles['mage'][] = $v;
} else {
$collectModuleFiles['custom'][] = $v;
}
}
return array_merge(
$collectModuleFiles['base'],
$collectModuleFiles['mage'],
$collectModuleFiles['custom']
);
}
This , $moduleFiles = glob($etcDir . DS . 'modules' . DS . '*.xml');
creates a glob of all the module definition files in etc/modules.
From this,
if ($name == 'Mage_All') {
$collectModuleFiles['base'][] = $v;
} else if (substr($name, 0, 5) == 'Mage_') {
$collectModuleFiles['mage'][] = $v;
} else {
$collectModuleFiles['custom'][] = $v;
}
We know that Mage_All is loaded first, then the Mage_ named files and last would be sequentially all files of custom modules in alphabetic order.
Once all the xml files are merged they are passed to this function
#File: app/code/core/Mage/Core/Model/Config.php
$moduleDepends = $this->_sortModuleDepends($moduleDepends);
Which will sort the load of modules as per dependency i.e the depends tag in the module definition file.
To cut the long story short, we can print the sequence in which the modules are loaded in our application,
echo "<pre>";
print_r(Mage::app()->getConfig()->getNode('modules')->children());
to check which module definition is being called first, and others subsequently.
Yes , so answering your question, magento will call all the observer methods associated with a particular event, and the sequence will be decided as per the call of particular module in which the observer class method is defined.
Hope this helps you in debugging in future.