2011-01-22 27 views
3

PHPで$ _SESSIONに配置できる文字列の長さ制限はありますか?PHPセッション文字列の制限

ありがとうございました

+0

このような質問をしている場合は、何か間違っています。 –

答えて

2

これは、session_save_handlerによって異なります。デフォルトでは、セッションデータはファイルに保存されるため、理論的には制限はありません(またはファイルシステムによって決定される非常に高いものもあります)。

セッションデータとして表示されるのは、すべての要求でインポートされますが、スクリプトが占めることができる最大メモリ量によって課せられる有効な制限があります。そこに数キロバイト以上保管しないことが賢明です。

大量のデータを保存する必要がある場合は、テンポラリファイル(現在のセッションの名前が付けられています)に保存してください。

+0

私はファイルに格納するというこのアイデアが気に入っています。実際には、重いデータベースベースのコンテンツを持つページがいくつかあり、毎晩更新しています。私はそれを私の読み込み速度を大幅に向上させるインクルードtxtファイルに保存します。ありがとう。 – santa

7

stringのサイズは、サーバーで使用できるメモリ容量によって制限されます。その文字列がセッションに正常に格納できるかどうかは、使用中のセッション記憶機構に依存します。

すぐに使用できるファイルベースのセッションストレージを使用している場合は、使用可能なメモリの容量を超えるファイルを書き込む可能性があります。しかし、例えばmemcacheを使用していた場合は、より制限されている可能性があります。

しかし実際には、あなたがこの質問をしているセッションでそれほど多くを保存しているなら、あなたはおそらくセッションを乱用しているでしょう!

セッションには、アプリケーションが処理する実質的にすべてのPHPリクエストに対して本当に使用したいものだけを含める必要があります。典型的な例は、ユーザー名、ユーザーID、または特権レベルです。あなたのアプリが時々もっと大きなものを必要とするとき、それは別のストレージシステムからそれをつかむことができます。

+0

+1、最初の2行はそれをすべて説明しています。 – RobertPitt

+0

私は、ユーザーのログインと、このユーザーが従うすべてのメンバーのIDを格納しているので、自分がレコードを取得する必要があるときにクエリを実行することを考えていましたが、確かにデータベースを再度照会する必要はありません。私は、50〜100の4-5桁の長さのIDを考えています。 – santa

+0

これはかなり小さいです。すべてのページでそれが必要な場合は、それを行ってください。さもなければ、私はちょうどそれを他の場所にキャッシュすることを提案するでしょう。 –

関連する問題