MySQL Установить время ожидания сеанса, интерактивное время ожидания не работает в Codeigniter - PullRequest
0 голосов
/ 19 февраля 2020

Я улучшаю веб-приложение, созданное в Codeigniter, чтобы контролировать, сколько людей могут одновременно сохранить строку.

Поскольку Codeigniter не включает в себя обычные функции «Для обновления» или «Режим блокировки в общем доступе», я выполнил ряд пользовательских запросов и получил «Для обновления».

Проблема в том, что строки заблокированы, но только на короткий промежуток времени (10 секунд), хотя я установил для сеанса более длительное время ожидания, я даже установил глобальное время ожидания и транзакция по-прежнему прерывается в течение 10-15 секунд.

Если я реализую функцию сна для тестирования, строки блокируются должным образом, как бы долго я не переводил транзакцию в режим ожидания.

Если я использую MySQL Workbench, время ожидания работает как положено.

    $this->db->query('SET SESSION autocommit = 0');
    $this->db->query('SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE');
    $this->db->query('SET SESSION innodb_lock_wait_timeout = 1');
    $this->db->query('SET SESSION interactive_timeout = 28000');
    $this->db->query('SET SESSION wait_timeout = 28000');
    $this->db->trans_start();

    $query = //Query is here

    $data = $this->db->query("{$sql} FOR UPDATE;")->row();

    return $data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...