Yii2: выполнить действие по истечении времени ожидания сеанса - PullRequest
0 голосов
/ 18 апреля 2020

Я использую сеансы Yii2 для хранения данных сеансов для гостевых пользователей.

Во время сеансов в каталоге @runtime создаются файлы. Эти файлы называются с идентификатором базы данных (например, 234.pdf).

Когда пользователь выбирает что-то, выбор сохраняется в БД, сохраняется в сеансе и генерируется файл:

$model->save();
file_put_contents($model->id.".pdf", ...);
Yii::$app->session->set("model_id",$model->id);

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

Как узнать, когда истекает сеанс?

1 Ответ

0 голосов
/ 18 апреля 2020

Yii не имеет настраиваемых обработчиков событий сеанса, в вашем случае я бы создал собственный указанный c обработчик сеанса, расширяющий встроенный PHP SessionHandler .

namespace app\components;

class CustomSessionHandler extends \SessionHandler
{
    public function destroy($sessionId)
    {
        // here you could implement your custom requirements
        return parent::destroy($sessionId);
    }
}

и вот ваша конфигурация

'components' => [
    'session' => [
        'handler' => \app\components\CustomSessionHandler::class
    ],
    ...
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...