質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
排他制御

排他制御とは、特定のファイル・データへのアクセスや更新を制御することです。特にファイルやデータベースへ書き込みを行う際、データの整合性を保つため別のプログラムによる書き込みを一時的に制御することを指します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2829閲覧

Webページの同時編集の禁止制御の実装方法について

BT_

総合スコア24

排他制御

排他制御とは、特定のファイル・データへのアクセスや更新を制御することです。特にファイルやデータベースへ書き込みを行う際、データの整合性を保つため別のプログラムによる書き込みを一時的に制御することを指します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/10/21 01:28

複数人の管理者を想定した管理者向けのサイトにて、
あるDBのレコードを編集するページにて、複数ユーザの同時編集を禁止したい場合はどのような制御を行うのが好ましいでしょうか?

・複数人が変更可能な編集ページを開いたときに「他の人編集中です」と表示され、更新ボタンが不可となるような制御が必要です。
(当然、レコードのロックなどでSubmit時に編集不可であることを検知するのも可能だとは思うのですがあくまでページを開いた瞬間に通知したいです。)

例えばLockテーブルを作成し、ロック中ページの情報を保持するようにすれば可能だとは思いますが、
途中離脱が行われたときのロック解除方法も決める必要がありますし、他に良い方法がないか知りたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

過去に同じような質問に答えたことがあります。

参考
https://teratail.com/questions/357903

離脱を検知するってのはけっこう難しいです。できないこともないですが、離脱の定義をどうするかも含めてなかなかに厳しく、技術的なところも含めて完全な実装はむずかしいのではないでしょうか?

妥協案として

  • ロックの状態はすべてDB側で管理する
  • ロックがかかった時刻が表示される
  • だれがロックをかけているかも分かる
  • 他の人がロックを強制解除することができる(解除権限を持たせるのもあり)
  • 一定の時間(たとえば半日とか1日とか)が経ったらロックは強制解除される(それはロックをかけた人にも伝わる)

どういうシステムなのか分からないのでこれが要件にマッチするかは分かりませんが、これくらいなら実装のコストもそれほどかからないのではないかと思います。

投稿2021/10/21 01:51

AbeTakashi

総合スコア4853

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/10/21 02:43 編集

> 離脱を検知するってのはけっこう難しいです。 WebSocketを張るなどはできます…が、ページを開いたままで放置してしまうとよくないかもですね(時間を切って強制ログアウトなどを併用すれば対応はできるかな)。
AbeTakashi

2021/10/21 15:18 編集

WebSocketでの離脱の検知の実装はたしかに思いつくのですが、実装コストが大きそうですよね。様々な離脱パターンがありそうですし。そこまで頑張って実装しても離脱検知が本当に機能するか?とか考えると、コストをかけるリスクの方が大きいんじゃないかな?と思ったりしますが、その辺に関しては質問者さんに判断していただくしかなさそうです。
BT_

2021/10/22 03:07

やはり要件、コスト次第ですよね。 方針も想定していたものと近かったため安心いたしました。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問