Php Yii2-压缩cookie值或更好的替代方案

Php Yii2-压缩cookie值或更好的替代方案,php,yii2,Php,Yii2,我正在处理一个现有代码,该代码将订单项目的详细信息存储在cookie中 在控制器中: public function actionAdd2cart($id, $url, $instructor_id, $location_id, $start_time, $date1) { $ep = Yii::$app->getTable->settings('general','enable_payment'); $order_item = \Yii::$app->getRe

我正在处理一个现有代码,该代码将订单项目的详细信息存储在cookie中

在控制器中:

public function actionAdd2cart($id, $url, $instructor_id, $location_id, $start_time, $date1) {
    $ep = Yii::$app->getTable->settings('general','enable_payment');
   $order_item = \Yii::$app->getRequest()->getCookies()->getValue('order_item');
        {
    $model = ClassDuration::find()->where(['id' => $id])->One();
    $model1 = Instructor::find()->where(['user_id' => $instructor_id])->One();
    $time = strtotime($start_time);
    $duration = $model1['instructor_duration'];
    $endTime = date("h:i A", strtotime('+' . $duration . ' minutes', $time));
    $fees = Instructor::find()->where(['user_id' => $model['instructor_id']])->one();                 
    $order_item[] = [
        'duration' => date('h:i A', strtotime($start_time)) . '-' . $endTime,                                
        'starttime' => $start_time,
        'endtime' => $endTime,
        'id' => $model->id,
        //'price' => $fees['instructor_fees'], this is disabled as payment info is not needed and to increase the cookie size
        'q' => 1,
        'date' => $model->start_date,
        'instructor_id' => $instructor_id,
        'location_id' => $location_id,
        'date1' => $date1,
        'datetime' => $date1 . "-" . $start_time . "i" . $instructor_id,
        ]; //product details array
                }

/********** cookies for product details **********/

        $cookie = new \yii\web\Cookie([
            'name' => 'order_item',
            'value' => $order_item,
            'expire' => time() + (60 * 60 * 24),
        ]);
    Yii::$app->getResponse()->getCookies()->add($cookie); // add product deatils to cookies
        if ($url == 'view') {
            return $this->redirect(Yii::$app->request->referrer);
        } else {
            // echo 1;
        }
    }
现在,我在这段代码中遇到的问题是,当将项目添加到购物车时,它允许根据不同的浏览器在购物车中添加6-8个项目,并且由于cookie大小的限制,我无法将更多项目添加到购物车中

我正在寻找一种方法,比如在设置cookie之前是否可以压缩cookie值,在访问cookie时是否可以解压缩cookie值


或者其他合适的解决方案。

可能将项目存储在服务器中,cookie应该包含该列表的唯一密钥,或者只使用会话。您好,您好,您的意思是我可以使用-`$session=new\yii\web\session…`而不是
$cookie=new\yii\web\cookie吗([
我是否需要重新编写代码以适应会话?我的意思是,不要将项目存储在cookie中,而是将它们存储在会话中。