DB 行が更新/追加された後にトリガーされる基本的なリスナー ( 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:「最新の開発」といくつかの説明。
私はフックを使用して、CiviCRM のフロントエンド コンポーネントによって提供されるフィードである、更新された iCal フィードをプッシュしています。データベースがその時点で更新され、どちらの側にもキャッシュがない場合でも、フックがトリガーされたときに更新されません。どうやら CiviCRM は独自のデータベース コネクタを使用しているため、上記の文言はもはや厳密には有効ではありません。少し後でトリガーするフック (civicrm_postProcess) を使用すると問題は解決しましたが、これは「ハッキーな」修正です。