Каталог Windows / Temp заполнен файлами сеанса Php, которые блокируют сервер

#php #session #iis-7 #windows-server-2008

#php #сеанс #iis-7 #windows-server-2008

Вопрос:

Всем привет, я итальянец, и я заранее приношу извинения за ошибки, которые гласят следующее 🙂

Это были темные дни для моего сервера, и я сходил с ума, чтобы понять, в чем может быть проблема. Я подумал, что база данных плохо настроена или что на жестком диске могут возникнуть какие-то проблемы, и я подумывал о смене сервера. Пока он тестировал жесткий диск с дефрагментацией и scandisk (не запускается), я решил открыть CCleaner, и чудо произошло. Папка Windows / Temp была полностью заблокирована, и вы даже не могли ее открыть. CCleaner очистил папку за десять часов :’) Десять часов для одной папки!

После дня уборки, сегодня утром я пошел проверить его, и внутри было 18000 файлов размером 0 КБ или максимум 10 КБ, которые называются «sess_0a5u2ou87 ………» ( sess_ имеет префикс, и я думаю, за ним следует md5).

Когда я открыл один из них, я обнаружил в нем переменные сеанса пользователей моего сайта.

 var|s:1:"2";timeout|i:1403338177;id|s:1:"1";name|s:17:"Foo";
 

Здесь показано, как я создаю сеансы:

 //create session
session_start();
$_SESSION['var'] = $var;
$_SESSION['timeout'] = time();

//work with session
public static function resetVar(){
   if(isset($_SESSION['var'])){
            unset($_SESSION['var']);
        }
}

//destroy session
session_start();  
if(isset($_SESSION['timeout'])) {       
    $duration = time() - (int)$_SESSION['timeout'];
    if($duration > 6000) {
        session_destroy(); 
    header("Location: index.php");
    }
    $_SESSION['timeout'] = time();
}     
 

Кто-нибудь может помочь мне понять это?

Ответ №1:

Я смог решить проблему. достаточно было изменить папку, в которой PHP сохраняет сеанс.. при его изменении файлы «sess_ …» старше одного часа будут автоматически удалены! Я думаю, что Php пытался удалить файлы в папке Windows / Temp, но, вероятно, из-за проблем с разрешениями, он не смог.

Вы можете изменить путь в настройках php (php.ini), изменив значение «session.save_path»

Ответ №2:

У меня была такая же проблема, но я видел ошибку отсутствия драйвера PHP MYSQL PDO.

  could not find driver
 

Только после некоторого копания я обнаружил, что в каталоге сеанса было 15 тыс. файлов. После удаления все хорошо.

Проверьте этот php var, который управляет временем жизни файлов сеанса;

  session.gc_maxlifetime
 

http://ar.php.net/manual/en/session.configuration.php .