2011-08-05 9 views
0

私は約200時間(ピーク時)の訪問者を約2日間まっすぐに時間を取っている企業のための迅速な調査に取り組んでいます。 $ _SESSION変数を使用してサーバーを結ぶのかどうか疑問に思っていました。これらの変数に格納されているものは、最大6文字の文字列または1桁の整数です。私はPHPの世界には初心者なので、どのように$ _Session変数がどれほど信頼できるかわかりません。使用しているサーバーはクラウドサーバーです。 1つの最終的な注意点は、セッションを閉じる前に、各訪問者のセッションが6〜10分最長で終わることです。

ご協力いただきますようお願い申し上げます。

+0

あなたはどういうことを言っていますか? –

+0

あなたはFacebookを知っていますか?私は彼らがPHPセッションを使うと確信しています! – Jacob

+0

この代わりにクッキーを使用することを検討しましたか? – mellowsoon

答えて

0

タイアップ?ディスクスペース?デフォルトのファイルベースのセッションハンドラを使用してシンプルな6文字列を格納すると、ディスク上の可変長の文字数+ 6文字分を占有します。セッションファイル内のデータをロード/アンサイズするためにはオーバーヘッドがあります。セッションデータを使用しているスクリプトの読み込み/コンパイルの初期オーバーヘッドよりもはるかに少ないでしょう。

PHPのデフォルトのセッションでは、ディスクがストレージメディアとして使用されることを覚えておいてください。スクリプトが終了してもメモリに保持されません。

0

PHPでは、セッションハンドラを変更できます。デフォルトのセッションハンドラは、セッションごとに1つのファイルで、一時ファイルにデータを書き込むことです。それは正常に動作しますが、トラフィックの多いアプリケーションを実行する場合は制限があります(ただし、200K /時ではデフォルトのハンドラに問題はありません)。

そして簡単な解決策PECL/memcache拡張モジュール(PECL/Memcachedの拡張と混同しないように)して、Memcachedのためにセッションハンドラを使用することです:

http://www.php.net/manual/en/memcache.examples-overview.php(例えば、#2を参照)

+0

情報については、その設定でプロダクションサーバを稼働しており、問題なく60req/sに達します(セッションは実際にボトルネックではありません。デフォルトのハンドラで正常に動作するかもしれません) – gou1

1

ことでデフォルトでは、$ _SESSIONのデータは、session_write_close()を呼び出すたびに、またはスクリプト終了時にディスクに書き込まれます。使用するサーバーハードウェア上の最終アプリケーションをテストせずにこれがどのように実行されるかを知る方法はありません。データの量が少ないので、実際の心配はディスクの待ち時間です。このための簡単な回避策は、PHPのsession_save_pathをメモリ内のファイルシステムに設定することです。

0

ディスクに書き込むため、データをセッションに保存したくないと思います。誰かが複数のリクエストでアプリにヒットした場合、クラウド内の同じマシンにアクセスすることを保証できますか?それは書くのがむしろ複雑です。私は代わりにユーザーをクッキーします。

http://php.about.com/od/learnphp/qt/session_cookie.htm

http://www.quora.com/Does-PHP-handle-sessions-by-writing-session-variable-data-to-disc-or-does-this-information-persist-only-in-RAM-Will-accessing-session-data-cause-a-disc-read-in-PHP

他の人が、私はあなたが拡大する場合のMemcachedを使用すると思いますが、直接あなたの質問に答えるために、私はあなたのサーバーは、あなたが記述の使用を処理することができるはずだと思う言ったように。

+0

計算してくださいこの場合、生成されたセッションデータ全体がばかげていることがわかります。 –

関連する問題