Столкнулся с проблемкой. Есть функция такая, получает ид диалога с пользователем по его id(пользователя):
public static function getDialogByUserId(int $user_id)
{
$keyCache = 'dlg:byuserid:' . $user_id;
$unionQuery = Yii::$app->redis->get($keyCache);
if (false === $unionQuery) {
$query1 = self::find()
->where(['user_one' => $user_id, 'user_two' => Yii::$app->user->id]);
$query2 = self::find()
->where(['user_two' => $user_id, 'user_one' => Yii::$app->user->id]);
$unionQuery = self::find()
->from(['x' => $query1->union($query2)])
->one();
echo '<pre>';
var_dump($unionQuery);
echo '</pre>';
//Yii::$app->redis->set($keyCache, $unionQuery, 600);
}
return $unionQuery;
}
редис не родной yii, а пекля пхпшная используется как кеш.
В таком виде работает нормально, т.е. диалог ищется, объект AR отдается. Но если пробую этот объект засунуть в редис, то вылетает ошибка о нехватке памяти. Почему?
Дамп AR объекта:
object(common\models\dialogs\Conversation)#157 (8) {
["_attributes":"yii\db\BaseActiveRecord":private]=>
array(7) {
["c_id"]=>
int(48)
["user_one"]=>
int(8)
["user_two"]=>
int(3)
["last_message"]=>
string(37) "Ну да, типа работает "
["ip"]=>
string(15) "255.255.255.255"
["created_at"]=>
string(19) "2016-07-23 04:05:51"
["updated_at"]=>
string(19) "2016-07-23 04:30:23"
}
["_oldAttributes":"yii\db\BaseActiveRecord":private]=>
array(7) {
["c_id"]=>
int(48)
["user_one"]=>
int(8)
["user_two"]=>
int(3)
["last_message"]=>
string(37) "Ну да, типа работает "
["ip"]=>
string(15) "255.255.255.255"
["created_at"]=>
string(19) "2016-07-23 04:05:51"
["updated_at"]=>
string(19) "2016-07-23 04:30:23"
}
["_related":"yii\db\BaseActiveRecord":private]=>
array(0) {
}
["_errors":"yii\base\Model":private]=>
NULL
["_validators":"yii\base\Model":private]=>
NULL
["_scenario":"yii\base\Model":private]=>
string(7) "default"
["_events":"yii\base\Component":private]=>
array(2) {
["beforeInsert"]=>
array(1) {
[0]=>
array(2) {
[0]=>
array(2) {
[0]=>
object(yii\behaviors\TimestampBehavior)#159 (6) {
["createdAtAttribute"]=>
string(10) "created_at"
["updatedAtAttribute"]=>
string(10) "updated_at"
["value"]=>
object(Closure)#158 (2) {
["this"]=>
*RECURSION*
["parameter"]=>
array(1) {
["$event"]=>
string(10) ""
}
}
["attributes"]=>
array(2) {
["beforeInsert"]=>
array(2) {
[0]=>
string(10) "created_at"
[1]=>
string(10) "updated_at"
}
["beforeUpdate"]=>
array(1) {
[0]=>
string(10) "updated_at"
}
}
["skipUpdateOnClean"]=>
bool(true)
["owner"]=>
*RECURSION*
}
[1]=>
string(18) "evaluateAttributes"
}
[1]=>
NULL
}
}
["beforeUpdate"]=>
array(1) {
[0]=>
array(2) {
[0]=>
array(2) {
[0]=>
object(yii\behaviors\TimestampBehavior)#159 (6) {
["createdAtAttribute"]=>
string(10) "created_at"
["updatedAtAttribute"]=>
string(10) "updated_at"
["value"]=>
object(Closure)#158 (2) {
["this"]=>
*RECURSION*
["parameter"]=>
array(1) {
["$event"]=>
string(10) ""
}
}
["attributes"]=>
array(2) {
["beforeInsert"]=>
array(2) {
[0]=>
string(10) "created_at"
[1]=>
string(10) "updated_at"
}
["beforeUpdate"]=>
array(1) {
[0]=>
string(10) "updated_at"
}
}
["skipUpdateOnClean"]=>
bool(true)
["owner"]=>
*RECURSION*
}
[1]=>
string(18) "evaluateAttributes"
}
[1]=>
NULL
}
}
}
["_behaviors":"yii\base\Component":private]=>
array(1) {
["timestamp"]=>
object(yii\behaviors\TimestampBehavior)#159 (6) {
["createdAtAttribute"]=>
string(10) "created_at"
["updatedAtAttribute"]=>
string(10) "updated_at"
["value"]=>
object(Closure)#158 (2) {
["this"]=>
*RECURSION*
["parameter"]=>
array(1) {
["$event"]=>
string(10) ""
}
}
["attributes"]=>
array(2) {
["beforeInsert"]=>
array(2) {
[0]=>
string(10) "created_at"
[1]=>
string(10) "updated_at"
}
["beforeUpdate"]=>
array(1) {
[0]=>
string(10) "updated_at"
}
}
["skipUpdateOnClean"]=>
bool(true)
["owner"]=>
*RECURSION*
}
}
}
Ну и сама ошибка:
Allowed memory size of 134217728 bytes exhausted (tried to allocate 2118167486 bytes)