web-dev-qa-db-ja.com

PHPセッションファイルは削除されますか?

私の "/ tmp"ディレクトリ(CentOSマシン)には何千ものファイルがあり、それらのほとんどすべてがPHPセッションファイルです。
これが私のシステムに与える可能性のある影響について心配しています。
これらのファイルは、OS、Apache、またはPHPによって削除されたことがありますか?それとも自分で処理する必要がありますか?

6
GetFree

PHP=ガベージコレクターによって削除する必要があります。頻度はsession.gc_maxlifetime php.iniの設定。おそらくこれがキックしない場合は、他の問題があります。

7
Jon Rhoades

デフォルトのDebianおよびUbuntuでは、セッションはcron /etc/cron.d/php5によってクリーンアップされます

# Look for and purge old sessions every 30 minutes
09,39 *     * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete

ここで、/usr/lib/php5/maxlifetimeは、session.gc_maxlifetimeで設定されたライフタイムを分単位で示します。

5
Tim Hecktor

また、再起動時-/ tmpは常に再起動時に消去されるため。

2
thinice

Cronスクリプトを設定して、自動的にクリーンアップすることができます。一般に、システムに設定されているCookieの有効期限よりも古い作成日をテストすることをお勧めします。

Cookieの有効期限の制限はこのように行われます(スクリプトが何かを出力する前に行う必要があります):

<?php
session_name('my_site_name');
session_set_cookie_params(1209600); # max cookie age of 14 days
# send cookie headers
session_start();
?>

次に、クリーンアップスクリプトで:

#!/bin/sh
find /tmp -maxdepth 1 -type f -name 'php_session_file_prefix*' -ctime +15 -exec rm -f {} \;

次に、crontabで:

# Run daily cron jobs at 03:40 every day
40 3 * * * /path/to/php-session-cleanup.sh
1
amphetamachine