質問: 当サイトでの質問「phpのSESSION変数が勝手に書き換わる」に関連して、 少し観点を変えて新たに質問させていただきます。 前回の質問では、私がSESSION変数を大量に使用していたため、 使用できるメモリがあふれてしまっていたことが原因でした。 では、php+MySQL+Linux を用いたwebアプリケーションで あとどのくらいなら安全にSESSION変数が使用できるのか、 今上限に達しつつあるのか、まだ余裕があるのかなどを(管理者の画面に) 表示させることはできますか? どのような関数を用いれば実現できますか? 当方の環境 ``` $ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) $ rpm -qa | grep php php-5.4.45-13.el7.remi.x86_64 ```
回答: 回答としては現実的には難しいと思います。 前の質問も踏まえて回答をしますと。 現在のメモリ量を調べるには以下の関数を使えば良いとは思いますが memory_get_usage セッションで利用するメモリ量とアプリケーションで使うメモリ量を明確に区別してわかるものではないので、ある程度セッションで使える量を計算しておく必要が有ります。 ``` Allowed memory size ``` このエラー自体はセッションの数の問題ではなくてPHPで扱うメモリの数なので仮にSessionでギリギリいっぱいまでメモリを使うように設定しても、別の部分でメモリを使ってしまうと、すぐオーバフローしてしまうとからですね。 さらにアプリケーションが毎回同じだけメモリを使うという要件はあまりないと思います。 入出力、処理の内容、変数の数、いろんな要素でメモリの使用量は変わるので、明確にここまでという線引きは難しいと思います。 メモリの使用量は把握できる→しかしセッションで利用できる量の計算はアプリケーションが利用している量に依存する→アプリケーション側で以下にメモリの使用量を固定化しているかによる→ メモリの使用量は固定化は現実的に難しい。→現実的に無理という論法です。 ちなみに、Sessionが難しいということであればストレージを利用するほうがいいかと思います。 ストレージもmemcachedやRedisなどのメモリを利用する高速なものも有りますのでそちらを検討してはいかがでしょうか?