Взаимное исключение в Joomla
Я создал расширение для Joomla, используя:
$id=$database->insertid();
Я только что рассказал, что если два пользователя, вошедшие на сайт, будут совмещать друг с другом, выполнят две записи в базе данных, и тогда это утверждение вернет в обоих случаях одно и то же значение. В php вы можете решить эту проблему с транзакциями.
В Joomla, как я могу решить эту проблему?
3 ответа
Если у вас есть таблица, с которой вы работаете и которая расширяет JTable, убедитесь, что вы включили функцию извлечения, которая, возможно, является ее частью. Это должно означать добавление пары полей, таких как в таблице содержимого. Это не позволит двум людям редактировать одну и ту же строку одновременно, что создаст состояние гонки, при котором один из других потеряет свои данные.
Обратите внимание, что функции php и joomla, возвращающие последний идентификатор вставки, зависят от реализации mysql, а mysql возвращает последний идентификатор, вставленный в текущее открытое соединение, поэтому параллелизм не является проблемой.
@iacoposk8 Вы правы, возможно, в самом заднем случае. В такое время попробуйте добавить текущего идентификатора пользователя, вошедшего в систему, в запросе sql или в любом другом месте, чтобы это не вызывало конфликта. Я надеюсь, вы понимаете, что я хочу сказать. Спасибо