Перенос сеанса из memcached в redis без выхода из системы в laravel - PullRequest
2 голосов
/ 30 октября 2019

В настоящее время мы используем Memcached для хранения сеанса Laravel на основе файлов cookie, но хотим использовать Redis для сеанса и кэширования для обеспечения согласованности.

Существует ли способ переноса всех пользовательских сеансов из Memcached в Redisбез выхода из системы?

1 Ответ

0 голосов
/ 30 октября 2019

Ниже приведен пример, как сделать этот вид миграции. Попробуйте так:

<?php

$host = '127.0.0.1';
$port = null;
$oldPrefix = 'sess_';
$newPrefix = 'sess_';
$sessionDir = '/var/lib/php/session/';
$m = new \Redis();
$m->connect($host, $port);
// $m = new \Memcached();
// $m->addServer($host, $port);
$sessions = scandir($sessionDir);
if (!$sessions) {
    die('nothing to migrate');
}
foreach ($sessions as $s) {
    if (in_array($s, ['.', '..'])) {
        continue;
    }
    $sessionName = str_replace($oldPrefix, '', $s);
    $sessionContents = file_get_contents($sessionDir.$s);
    if (!$m->set($newPrefix.$sessionName, $sessionContents)) {
        die(sprintf('Could not migrate session %s'.PHP_EOL, $newPrefix.$sessionName));
    }
    echo '.';
}
die(PHP_EOL);

Но я думаю, что пользователи будут отключены.

...