Народ, 2 дня убил, уже и на redis пробовал перевести, думал с сессиями что-то, ничего не вышло. Провел следующий эксперемент: в контроллере, который вызывается первым: extension/quickcheckout/set добавил установку в сессию случайного значения, назвал его rand
$rand = rand(10,99);
$this->session->data['rand'] = $rand;
var_dump('rand = ' . $rand );
В контроллере, который вызывается следующим: extension/quickcheckout/cart добавил просто вывод этой переменной из сессии
var_dump('$this->session->data[\'rand\'] = ' . $this->session->data['rand'] );
При клике в корзине на кнопку "+" происходит отправлка данных на extension/quickcheckout/set там в сессию записывается значение, следом грузится extension/quickcheckout/cart (Очередность проверял, выводил время в милисекундах - все четко, порядок именно такой). И вот что мы получаем, где-то 1-5 раз в обоих случаях выводится верное значение, потом несколько раз в extension/quickcheckout/cart показывает предыдущее. Логично было предположить, что в первом контроллере не устанавливается значение, для того, что бы это проверить, я быстро набросал модель castom/custom с одним методом, котрый возвращает текущее значение $this->session->data['rand'].
public funtion getRand(){
if(isset($this->session->data['rand'])){
return $this->session->data['rand'];
} else {
return 0;
}
}
Теперь в extension/quickcheckout/set (котроллер, который вызывается первым) стал проверять текущее значении сессии, полученное из этой модели
$this->session->data['rand'] = rand(10,99);
var_dump( $this->session->data['rand'] ); // 1
$this->load->model('custom/custom');
$fromCustom = $this->model_custom_custom->getRand();
var_dump($fromCustom ); // 2
Значение в строке 1 и в строке 2 ВСЕГДА выводит одинаковое.
Но если продолжить добавлять товар в корзину, то происходит эта долбанная магия: 5 раз значение показывается одинаковое во всех трех выводах (48, 21, 55, 74, 59). Затем, на 6-й раз в extension/quickcheckout/set в строке 1 и строке 2 показывает новое значение: 33, а в extension/quickcheckout/cart показывает предыдущее значение rand - 59 . Проверяю базу, в базе лежит 59.
У меня совсем закончились мысли, что это может быть. Получается в одном месте значение ссессии устанавливается, в другом читается, а в третьем и в базе все еще предыдущее. Если у кого-нибудь есть мысли по этому поводу прошу поделиться