2009-07-16 7 views
1

PHPセッションデータをMySQLに保存するようにアプリケーションを変更しようとしています。アプリケーションはajaxを集中的に使用しますが、長いポーリングやその他の永続的な接続は使用しません。Ajaxの重い環境でMySQLに保存されたPHPセッション

私の質問は、私がこのコードを書くときに気が付かなければならない問題がありますか?例えば;私はデータをロードするために4つのajaxリクエストを送信するページを持っています(別のトピック用)。すべてのリクエストでセッションデータを更新する必要がある場合、これによりロックの問題が発生しますか?

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

答えて

1

ajaxリクエストを複数のスクリプトに同時に適用すると、競合状態が発生する可能性があります。コールバックを使用しない限り、ajaxリクエストを割り当てた順番で完了することを確認することはできませんが、これはかなり遅くなります。

読んでいる限り、問題はないはずですが、複数のリクエストが行われたときに書いているのであれば、最新のデータで読取りが行われていることを確認する方法がありません。

+0

OK、それほど悪くないので、これは正しいですか? - ユーザーがログインするとセッションデータを保存する必要があります。 - リクエストごとにセッションデータを読み取る必要があります。 - ユーザーがログアウトするとセッションデータを削除する必要があります。 正しいプロセスフローですか?彼がログアウトしないとどうなりますか?セッションデータを更新する時期はどのように分かりますか? – frio80

+0

必要なときにのみセッションを更新するには、ログアウト/ログインが重要です。ユーザーがログアウトしない場合は、セッションを保存したままにしておくことが大切ですが、最後に保存されたタイムスタンプを含めて、セッションを開始してもログアウトしない/戻ってこなかったらクリーンアップを行うことができます。 –

0

スピードを重視するなら、Memcacheにセッションデータを保存するほうがずっと良いでしょう。テーブルにデータを格納することに関連するデータベースの待ち時間はありません。memcacheはハッシュキーを使用してRAMにデータを格納します。これにより、リレーショナル・データベースが実際のリレーショナル・クエリーを実行できるようになり、データベースの他の部分をキャッシュするためのメモリーが解放されます(セッション表への多数のリクエストにより、他の表をキャッシュするための使用可能なメモリーがすべて満たされます。キャッシュが最も重要です)。

確かに、それは学び、維持するもう一つの依存とサービスですが、スピードの向上は莫大です。

+0

Memcache拡張機能について: http://us2.php.net/memcache Memcacheを使用してセッションデータを保存する方法について詳しくは、 http://www.google.com/search?q=php+memcache +セッション また、このオブジェクトデータベースをセットアップすると、問題の他の部分でもこのオブジェクトデータベースを使用して、リレーショナルデータベースの負担やオーバーヘッドを招くことなく、個々のデータレコードの検索を改善できます。 – Nolte

関連する問題