Я реализую базовый прослушиватель (civicrm_post ловушка), которая срабатывает после обновления/добавления строки БД. Проблема, с которой я сталкиваюсь, заключается в том, что даже если строка в таблице была изменена, загрузка той же строки через объект базы данных Joomla возвращает предыдущее значение.
Допустим, я меняю имя объекта с «foo» на «bar».
$db =& JFactory::getDBO();
$db->setQuery("SELECT ...");
возвращает 'foo' в качестве имени, тогда как
$c = mysql_connect("host","user","password");
mysql_select_db("db", $c);
$result = mysql_query("SELECT ...");
возвращает «бар».
Происходит ли какое-либо кэширование и можно ли его как-то очистить?
Для справки:
- Джумла 2.5.6
- PHP 5.3.10
- MySQL 5.1.36
Изменить: вот тема, которую я начал на форумах CiviCRM, которая содержит более подробную информацию: http://forum.civicrm.org/index.php/topic,25200.0.html
Редактировать 2: «Последние события» и некоторые пояснения.
Я использую хук для отправки обновленной ленты iCal, которая предоставляется интерфейсным компонентом CiviCRM. Он не обновляется, когда срабатывает хук, даже если база данных обновляется в этот момент и нет кэширования на обоих концах. Судя по всему, CiviCRM использует свой собственный коннектор базы данных, поэтому приведенная выше формулировка больше не является строго действительной. Использование хука, который срабатывает немного позже (civicrm_postProcess), решило проблему, но это «хакерское» исправление.