web-dev-qa-db-ja.com

なぜDebianはphpの組み込みガベージコレクターを使用する代わりにcronジョブでphpセッションをクリーンアップするのですか?

Debianおよび派生物(Ubuntu)は、phpセッションのガベージコレクターを使用しません

session.gc_probability = 0

代わりに、cron /etc/cron.d/php5を使用します

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete

Debianがこれを選択した理由は?

28
nulll

Debianは/var/lib/php5(1733、所有者ルート、グループルート)に非常に厳しい権限を設定してPHPセッションハイジャックを防ぎます。残念ながら、これによりネイティブのPHPセッションガベージコレクターは、セッションファイルをそこに表示できないため、機能しません。cronジョブはrootとして実行され、セッションファイルを表示してクリーンアップするための十分なアクセス権があります。

Edit:サポートドキュメント: bug#26772 に応じて動作が確立されました。 (これについては、ストックphp.iniファイルに以前はコメントがありましたが、wheezyベースのPHPインストール)には表示されません。)

32
asciiphil

トラフィックの少ないサイトでは少し信頼性が高くなる可能性が高く(1日あたり数百のヒットしかなく、GCが1000ごとにしか起動しない場合、セッションは必要以上に長く留まる可能性があります)、私はそれがセッション数が多い場合、サーバーでの負荷はネイティブGCよりも少し低くなります。

5
ceejayoz