Frage

Ich entwickle eine PHP / MySQL-Anwendung, die mehrere Benutzer gleichzeitig verarbeitet. Ich denke an den besten Ansatz zu nehmen, wenn es um Sperren / Warnung vor Aufzeichnungen kommt, die derzeit angesehen / Bearbeitung.

Das Szenario zu vermeiden, sind zwei Benutzer die Aufzeichnung sehen, eine Änderung zu machen, dann ebenfalls das anderes tun -. Mit dem Potential, dass eine Änderung der vorherigen überschreiben könnte

In den neuesten Versionen von Wordpress verwenden sie eine Methode, dies zu erkennen, aber es scheint nicht ganz zuverlässig -. Oft Fehlalarme Rückkehr, zumindest in meiner Erfahrung

Ich gehe davon irgendeine Form von Ajax vorhanden sein, muss die Anwendung auf ‚Ping‘ und lassen Sie es den Rekord weiß noch betrachtet wird / bearbeitet (ansonsten könnte ein Benutzer einfach ihre Browser-Fenster schließen, und dann, wie würde die Anwendung kennt Das).

Eine andere Lösung, die ich sehen konnte, ist der letzte aktualisierte Zeit zu überprüfen, wenn ein Datensatz für die Aktualisierung gesendet wird, zu sehen, ob in der Zwischenzeit es an anderer Stelle aktualisiert wurde - und dann bieten dem Benutzer die Wahl, ihre eigenen Änderungen fortzufahren oder zu verwerfen.

Vielleicht den falschen Baum im Hinblick auf eine Lösung, ich bin zu bellen - was Völker Erfahrungen sind diese umzusetzen Anforderung (was eine recht häufige sein muss)

War es hilfreich?

Lösung

Ich würde dies tun: Bewahren Sie die Zeit der letzten Änderung in der Bearbeitungsform. Vergleichen Sie diese Zeit auf Vorlage mit der in der Datenbank gespeicherten Zeit. Wenn sie gleich sind, sperren die Tabelle, um die Daten aktualisieren (zusammen mit der Modifikationszeit) und die Tabelle entriegeln. Wenn die Zeiten unterschiedlich sind, weist die Benutzer darüber, und für den nächsten Schritt fragen.

Andere Tipps

Gute Idee mit dem Zeitstempel Vergleich. Es ist kostengünstig zu implementieren, und es ist ein kostengünstiger Betrieb in der Produktion zu laufen. Sie müssen nur die Logik schreiben, um den Benutzer zu senden zurück, um die Statusmeldung, die ihre Schreib- / Update nicht auftreten, weil jemand sie es schlagen.

betrachten Vielleicht bei jeder Aktualisierung der Benutzername Speicherung in einem Feld namens so etwas wie ‚LastUpdateBy‘ und kehrt dass an den Benutzer zurück, die ihre Aktualisierung vorgegriffen hatte. Nur ein wenig nicety für den Anwender. vielleicht nicht in einer Umgebung, Nizza im Corporate Sinne, wo es möglicherweise nicht angemessen sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top