質問 > その他 > セッション排他制御でのバグについて |
その他
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
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 を 使用すると、排他制御が効かない、ということのようです。 具体的には、下記の例ですと、
(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 |