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

tamura masuhisa wander1275 @ hotmail.co.jp
2006年 3月 10日 (金) 16:06:05 JST


こんにちは、まーです。
返信が遅くなってすみません(><
さわだ様、SUNADA様、大和様、kehi様、お返事ありがとうございます。

>同時アクセスのエラー処理というより、同時ログインの制御というイメージで
>良いでしょうか?

その通りです(笑)

>管理テーブルに会員IDで検索して結果行があったら全てdelete
>sessionを作るときに、管理テーブルにログイン状態をinsert
>各ページで、session_id(session_id()で参照とか)で管理テーブルを検索
>二重ログインしたら、既にログインしているユーザが以後ページを参照できなくな
ります。

なるほど!可能ですね!
また、わかり易い説明をありがとうございます。
ただ、既にログインしているユーザが利用できなくなるのが気になります。。。

さわだ様、ありがとうございます。

>ログアウトする・・もしくはブラウザを閉じた時に
>セッションファイルの中身が消えますので、
>それをうまく利用すると出来そうですね。

なるほど。こんな感じですか?

・ログイン時
 認証OKであれば、
  - データベースより会員IDをキーにセッションIDを取得。
   - 取得したセッションIDよりセッションファイルが存在するか判定

  セッションファイルが存在する
    - 同時アクセスとなるため、エラーを返す
   セッションファイルが存在しない
   - 会員IDをキーとして、セッションIDをデータベースに登録

 また、コンテンツサイトを複数作成する予定なので、セッションが作成されるフォ
ルダを
 通常のフォルダと分けて管理するってことも必要ですね。(必要かな?)

SUNADA様ありがとうございます。


>予めID名でのファイルを用意しておき、
>ログイン時にロックをかけます。
>PHP4ではないのでPEARでの擬似的なデストラクタを使用し、
>ブラウザが閉じられたときにエラーとみなし、このとき
>ロックを解除する仕組みにすればうまく同時接続を制御できるかもしれません。

なるほど。
 すみません、力不足です。
 PEARでの擬似的なデストラクタをどう作ればいいのかわかりません(><
 少し勉強してみます。

大和様ありがとうございました。


>> >[PHP-users 27006] Re: ダウンロードヘッダー出力後の処理の制御
>> http://ns1.php.gr.jp/pipermail/php-users/2005-September/027523.html
>> 
>> 応用で何かできるかも・・・
>> http://php.s3.to/man/features.connection-handling.html
>>
>なるほど。
>接続が終了する前(PHPが動いている間)であれば、状態を取れるということですね。

>わりと長めの動作をするようなスクリプトであれば、ブラウザが閉じられた
>あるいは中止を押下したと推定することはできそうです。

なるほど。接続関数っていうのもあるのですね。
長い時間動いているスクリプトなら使えますね!


今回、皆様のアドバイスにより実現が可能になりそうです。
大変ありがとうございました!
また、返信が遅くなったことを深くお詫びします。

_________________________________________________________________
迷惑メールやウイルスへの対策も万全「MSN Hotmail」 
http://promotion.msn.co.jp/hotmail/ 



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