У меня есть класс модели доктрины с крюком после сохранения:
class MyClass extends BaseMyClass
{
public function postSave($event)
{
myFunctionCache::getInstance()->remove(MyClassTable::CACHE_KEY_PREFIX);
}
}
Я хочу очистить данные redis по ключу после сохранения изменений объекта MyClass в mysql, и это работает, когда нет большой нагрузки на БД, но теперь очистка redis происходит перед применением изменений данных в mysql. Я искал причину и нашел sfFormObject :: save
try
{
$con->beginTransaction();
$this->doSave($con);
$con->commit();
}
catch (Exception $e)
{
$con->rollBack();
throw $e;
}
и ловушка postSave вызывается в doSave, но после этой фиксации. Я пытаюсь использовать postTransactionCommit, добавляя myListener к соединению, но мне это не помогло.
Затем я пытаюсь добавить собственный хук к записи доктрины и вызвать его после коммита:
{
$con->beginTransaction();
$this->doSave($con);
$con->commit();
$event = new Doctrine_Event($this, Doctrine_Event::TX_COMMIT);
$this->getObject()->postCommit($event);
}
Это также не имеет успеха. Любой совет?
Задача ещё не решена.
Других решений пока нет …