Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie implementiert man pessimistische Sperren in einer PHP/Mysql-Webanwendung?

Sie müssen ein LOCKDATE- und ein LOCKWHO-Feld in Ihrer Tabelle implementieren. Ich habe das in vielen Anwendungen außerhalb von PHP/Mysql gemacht und es ist immer gleich.

Die Sperre wird beendet, wenn die TTL verstrichen ist, sodass Sie mit NOW und LOCKDATE eine Subtraktion der Daten durchführen können, um zu sehen, ob das Objekt für mehr als 30 Minuten oder 1 Stunde gesperrt war, wie Sie es wünschen.

Ein weiterer Faktor ist zu berücksichtigen, ob der aktuelle Benutzer derjenige ist, der das Objekt sperrt. Deshalb brauchen Sie auch einen LOCKWHO. Dies kann eine user_id aus Ihrer Datenbank oder eine session_id aus PHP sein. Aber behalte es bei etwas, das einen Benutzer identifiziert, eine IP-Adresse ist kein guter Weg, dies zu tun.

Denken Sie schließlich immer an eine Massenentsperrungsfunktion, die einfach alle LOCKDATEs und LOCKWHOs zurücksetzt ...

Prost