バージョン選択

フォーラム

メニュー

オンライン状況

60 人のユーザが現在オンラインです。 (44 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 59
tattsu もっと...

サイト内検索

質問 > その他 > セッション排他制御でのバグについて

その他

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
134
投稿日時: 2011/6/21 15:32
対応状況: −−−
一人前
登録日: 2009/10/20
居住地: 京都市
投稿: 91
Re: セッション排他制御でのバグについて
PHPのデフォルトのセッション機構を使用すると、セッションデータは
ファイルとして書き出され、サーバ上に保存されます。
また、セッションのOPEN中は別のファイルからセッションをOPEN出来ないよう、
排他処理がかかっています。

session_set_save_handler を使用すると、独自のセッションハンドラを設定し、
ファイルではなく、セッションデータをDBに保存するようなことができます。
実際にEC-CUBEは session_set_save_handler を使用して
DBにセッションデータを保存しているのですが、session_set_save_handler を
使用すると、排他制御が効かない、ということのようです。

具体的には、下記の例ですと、


(1) 14:12:40 	/index.php 		sfSessRead
(2) 14:12:45 	/index.php 		sfSessWrite
(3) 14:12:45 	/resize_image.php 	sfSessRead
(4) 14:12:47 	/index.php 		sfSessRead ← これが問題
(5) 14:12:50 	/resize_image.php 	sfSessWrite
(6) 14:12:52 	/index.php 		sfSessWrite
(7) 14:12:52 	/resize_image.php 	sfSessRead
(8) 14:12:57 	/resize_image.php 	sfSessWrite


(3)も(4)も、(2)で書き込まれた内容を元に処理を行い、
(5)→(6) と書き込みを行うため、
(5)で書き込んだ内容が、(6)で上書きされてしまう、ということです。

たとえば、index.php も resize_image.php も、
変数を1ずつインクリメントするだけの処理をしている場合、

(1)で0を読み込む
(2)で1を書き込む
(3)で1を読み込む
(4)で1を読み込む
(5)で2を書き込む
(6)で2を書き込む
(7)で2を読み込む
(8)で3を書き込む

となって、最終的に 3 がセッションに保存されます。

対して、デフォルトのセッション機構だと、排他制御のおかげで
読み込み→書き込みが必ず順に行われ

0を読み込む
1を書き込む
1を読み込む
2を書き込む
2を読み込む
3を書き込む
3を読み込む
4を書き込む

となって、最終的に 4 がセッションに保存されます。

デッドロックはDB側で変なロックをしていない限り大丈夫です。

ややこしいですが、ご理解の助けになったでしょうか…

フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
   セッション排他制御でのバグについて izumin 2011/6/21 14:57
   » Re: セッション排他制御でのバグについて 134 2011/6/21 15:32
       Re: セッション排他制御でのバグについて izumin 2011/6/21 16:04
         Re: セッション排他制御でのバグについて 134 2011/6/21 17:20
           Re: セッション排他制御でのバグについて izumin 2011/6/21 18:51
             Re: セッション排他制御でのバグについて izumin 2011/6/24 10:11
               Re: セッション排他制御でのバグについて seasoft 2011/6/24 11:13
                 Re: セッション排他制御でのバグについて 134 2011/6/24 13:03
                   Re: セッション排他制御でのバグについて izumin 2011/6/30 20:32
                     Re: セッション排他制御でのバグについて izumin 2011/8/11 23:03
                       Re: セッション排他制御でのバグについて AMUAMU 2011/8/12 18:20
                         Re: セッション排他制御でのバグについて izumin 2011/8/14 2:47
                           Re: セッション排他制御でのバグについて habu 2023/12/26 18:31
                 Re: セッション排他制御でのバグについて izumin 2011/6/30 20:17

 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,244名です
総投稿数は110,059件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1652
8
red
1570
9
mcontact
1299
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.