Есть несколько возможных способов оранизации подобной задачи Yii 2. У каждого есть плюсы и минусы. А хотелось бы чтобы и волки, и овцы....ну вы понимаете )
1) Через сессию в БД
Из плюсов я вижу то, что можно хранить все это дело постоянно и удобно экспортировать. Сделать уже пробовал. Вот моя настройка для компонента session:
'session' => [
'class' => 'yii\web\DbSession',
'writeCallback' => function($session){
return [
'user_id' => (isset(Yii::$app->user->id)) ? Yii::$app->user->id : null
];
},
'db' => 'db', // the application component ID of the DB connection. Defaults to 'db'.
'sessionTable' => 'session', // session table name. Defaults to 'session'.
'timeout' => 0
],
Хотел сделать так, чтобы сессия хранилась всегда. Ведь в один прекрасный момент все лайки юзера могут пропасть. Timeout = 0 не помогает. Тогда как сделать?
Из минусов этого подхода я вижу допонительные запросы к базе, что тормозит работу.
2) хранить в файлах.
Безусловно с файлами работать будет быстрее.
Тут та же самая проблема с бесконеным хранением.
Плюс если мы ничего не чистим, то рано или поздно сессия разрастется до больших размеров. Встает вопрос: а стоит ли это использовать? И если стоит, то как?
3) Куки.
Минусом этого подхода вижу то, что нельзя записать в куки массив. А в моей задаче очень удобно хранить идентификатор для лайка в массиве(для уникальности). Кука - это текстовый объект, поэтому придется делать implode & explode каждый раз.