[PHP-users 28706] Re: 同時アクセスがあった場合の制御

Shu Sawada luna @ lunanet.gr.jp
2006年 3月 10日 (金) 18:17:54 JST


さわだです。

本題の前に、お願いです。できればスレッドは切らないで下さい。
他の方が見づらくなると思いますゆえ。


で。

> 実はもう一つ仕様がありまして、会員1つにつき複数のライセンスを保持
> しております。
> なお、ライセンス番号は1からの連番です。
> 
> ■会員テーブル レイアウト
> [会員id]  [ライセンス]  [セッションID]  [time]
> ------+---------+---------+----------
>        10              1    a1s2s5i2d3  
>        15              1    akeaoal223
>        15              2    jk123k31h1
>        15              3    1k2j3k3k2k
>        15              4    a9isjk3iiu3i
>        15              5    k3ji3i2jijea
> 
> この場合、会員idとライセンスがキーになります。
> 
> さわだ様の案を改良する場合、キーが2つになった時の処理が思いつきません。。。

単に会員IDとライセンスを組み合わせてuniqueになるという話なら、そうすれば
いいんじゃないでしょうか。

- 自前管理テーブルを作る
	会員ID, ランセンス, session_id, timestamp
- ログイン時
	- 管理テーブルを会員ID+ライセンスで検索して結果行があったら全てdelete
		delete from 管理テーブル where 会員ID and ライセンス;
	- sessionを作るときに、管理テーブルにログイン状態をinsert
		insert into 管理テーブル ...
- 各ページでの前処理
	- session判定
	- session_idで管理テーブルを検索
		select count(*) from 管理テーブル where session_id = ''
		- 管理テーブルに行がなければ弾く
			- ここに行が無いのは、ログアウト済みか二重ログインした場合
- ログアウトしたら管理テーブルからdelete

じゃダメなんでしょうか?

僕はまーさんのやっておられる案件のことは判らないので、何が問題なのかが判らないです。
ごめんなさい。

-- 
Shu Sawada
http://luna.lunanet.gr.jp/


PHP-users メーリングリストの案内