2009-09-06 9 views
10

私のセッションが大きすぎるかどうかわかりません。セッションのサイズを確認する方法はありますか?シリアル化ハンドラがセッションをシリアル化するために使用さないですが、それはあまりにも遠くはありませんよう おかげで、 ラーフルSESSIONのサイズをエコーできますか?

答えて

16
$size_of_session_estimate = strlen(serialize($_SESSION)); 

は今、これは、単なる推定値です。

言われているように、あなたがセッションに愚かな量のデータを保存していない限り、恐らくこれについて心配する必要はありません。

+0

1は非常に迅速に、上のスポット*と*。 – karim79

+0

私は興味があります、私はセッションのサイズ制限があなたの記憶に基づいていたと思った、他の要因はありますか?私はユーザのセッションに狂った量のデータを保存しているので尋ねます – JasonDavis

+0

strlenが文字の数を与えるので、これがうまくいくと思います。 そして各文字は1kbです。私が間違っている場合は私を修正してください。 – Rahul

8

Apacheを使用している場合は、APACHE_ROOT/tmpフォルダを調べて、sess_***********という名前のファイルを探します。

それ以外の場合はhereからスクリプトを入手し、array_size($_SESSION)を使用して呼び出してください。これは正確な値とは多少異なる場合があります(PHPモジュールによって行われる圧縮/最適化に依存します)。

+0

一部の設定では、/ tmp以外の場所にセッションを保存する場合があります。 PHPの設定を確認して確認する必要があります。 – Charles

+2

paste-it.netはオフラインです、あなたのスクリプトへの代替リンクがありますか? – rubo77

4

この:

echo strlen(session_encode()); 

はあなたに$ _SESSIONが使用するディスク容量を提供します(session.save_handlerを仮定すると、デフォルト値はファイルである)、以来session_encode()文字列を返しますセッションファイルに格納されている文字列と同じです。

また)(session_encodeので、を使用するメモリの量のより良好な指標を与えるシリアライズ()未満のメタデータを付加します。デフォルトのApacheの設定で

でディスクに保存されているとして、あなたは、セッションデータを見ることができます:

session_write_close(); 
echo file_get_contents(sys_get_temp_dir() . 'sess_' . session_id()); 
+1

"受け入れられる回答である必要があります" –

関連する問題