Взаимное исключение в Joomla

Я создал расширение для Joomla, используя:

$id=$database->insertid();

Я только что рассказал, что если два пользователя, вошедшие на сайт, будут совмещать друг с другом, выполнят две записи в базе данных, и тогда это утверждение вернет в обоих случаях одно и то же значение. В php вы можете решить эту проблему с транзакциями.

В Joomla, как я могу решить эту проблему?

3 ответа

Если у вас есть таблица, с которой вы работаете и которая расширяет JTable, убедитесь, что вы включили функцию извлечения, которая, возможно, является ее частью. Это должно означать добавление пары полей, таких как в таблице содержимого. Это не позволит двум людям редактировать одну и ту же строку одновременно, что создаст состояние гонки, при котором один из других потеряет свои данные.

Обратите внимание, что функции php и joomla, возвращающие последний идентификатор вставки, зависят от реализации mysql, а mysql возвращает последний идентификатор, вставленный в текущее открытое соединение, поэтому параллелизм не является проблемой.

@iacoposk8 Вы правы, возможно, в самом заднем случае. В такое время попробуйте добавить текущего идентификатора пользователя, вошедшего в систему, в запросе sql или в любом другом месте, чтобы это не вызывало конфликта. Я надеюсь, вы понимаете, что я хочу сказать. Спасибо

Другие вопросы по тегам