質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ガーベジコレクション

ガーベジコレクション(Garbage collection;GC)とは自動的なメモリ領域の管理方法の一つです。不要な情報や、プログラム上で使用されていないオブジェクトによって占有されているメモリ領域を開放しようと試みます。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

Q&A

解決済

1回答

3206閲覧

Codeigniter3 ガベージコレクションについて

a0841_1974

総合スコア29

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ガーベジコレクション

ガーベジコレクション(Garbage collection;GC)とは自動的なメモリ領域の管理方法の一つです。不要な情報や、プログラム上で使用されていないオブジェクトによって占有されているメモリ領域を開放しようと試みます。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

0グッド

0クリップ

投稿2018/02/01 09:25

いつもお世話になっております。

Codeigniter3のガベージコレクションで
分からない事があります。

ご存知の方がおられましたら、教えて頂けますでしょうか。

【ご質問】
config.phpのsess部分を、以下の様に設定しています。
この設定で、ガベージコレクションが動き、
C:\tmp配下にあるci_session_ファイルが削除されている事を確認したいのですが、
ファイルが削除される事がありません。

ガベージコレクションが動いているよねという確認をしたいのですが、
何か良い方法はありますでしょうか。

(config.php) $config['sess_driver'] = 'files'; $config['sess_cookie_name'] = 'ci_session_'; $config['sess_expiration'] = 7200; $config['sess_save_path'] = 'C:\tmp'; $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = FALSE;

以上です。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

CodeIgniter 3のセッションはsession_set_save_handlerでセットしていますので、PHP標準に従って動く部分も多いです。

具体的には、アクセス回数に応じてsession.gc_probability/session.gc_divisorの確率(デフォルトでは1%)でガベージコレクション処理が動き出して、session.gc_maxlifetimeの時間(デフォルトでは24分)で消去されます。

つまり、デフォルト設定では1回や2回でガベージコレクション処理には入りません。

投稿2018/02/01 10:49

maisumakun

総合スコア145123

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

a0841_1974

2018/02/01 11:26

ご連絡ありがとうございます。 php.iniのsession.gc_probabilityを1に、session.gc_divisorを1に設定すれば100%でガベージコレクション処理がされるのでしょうか? また、gc_maxlifetimeが何に使われているのかがよく分からないのですが、 これは、ガベージコレクション処理が実施されたときの時間と、各セッションファイルの有効期限の差がgc_maxlifetimeに設定されている時間を越えていたら該当のセッションファイルを削除するということに使われているのでしょうか。 基本的な事が分かっておらず、 たいへん申し訳ございません。
maisumakun

2018/02/01 13:48

おそらくそうだと思いますが、なにぶんファイルセッションを実用していない(もともと時限機能があるRedisを使っている)関係もあって、詳しい挙動は把握しきれていない面もあります。
a0841_1974

2018/02/02 02:02

php.iniのsession.gc_probabilityを1に、session.gc_divisorを1にしたところ、セッションファイルが削除されました。 ありがとうごいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問