На сайте имеется функционал синхронизации xml-выгрузок товаров (система 1С выгружает данные в xml, сайт парсит это дело и по определенному атрибуту либо добавляет товары, либо обновляет существующие). Так вот, сам функционал синхронизации на мой взгляд написан добротно, однако очень часто сам процесс синхронизации попросту не происходит - об этом свидетельствуют счетчики добавленных/измененных товаров. Например, мне за один раз нужно синхронизировать несколько выгрузок: в первой из них суммарное число товаров (строк) в файле - 20 - при этом счетчики сообщают (например) : добавлено 10 новых товаров, обновлено 10 существующих товаров, при синхронизации второго файла (выгрузки, в которой 30 товаров) счетчики пишут точно такие же показатели - я конечно же сразу догадался, что всему виной кеширование запросов - и тут я и пытался перед каждой синхронизацией полностью очищать кеш (на сайте юзается CMS Yupe, но это не столь важно), и в самой функции вначале делать вот так:
Код: Выделить всё
$connection = Yii::app()->db;
// очистка из кэша схемы таблицы Товаров
$connection->schema->getTable('catalog_good', true);
В config/db.php:
Код: Выделить всё
'schemaCachingDuration' => 86400,
Мои пока неопробованные варианты и догадки:
1) Выставить 'schemaCachingDuration' => 0
2) Таблицу товаров (ибо только по ней происходят синхронизации) добавить в исключения: 'schemaCachingExclude' => ['catalog_good']
3) Попробовать очищать кеш $connection->schema->getTable('catalog_good', true); не в начале функции, а перед и после каждого запроса (ведь в функции присутствует цикл) - возможно, в этом дело?
4) Возможно всему виной какое-либо кеширование, включенное в самих настройках сервера (в php.ini) или мускуля? - Такое возможно?
Большое спасибо за помощь заранее!