【问题标题】:CakePHP 3.0 Configure::write() not retaining the key/value from one post to the next?CakePHP 3.0 Configure::write() 没有保留从一个帖子到下一个帖子的键/值?
【发布时间】:2016-01-08 20:12:49
【问题描述】:

每次我处理帖子时,代码都会通过我自己的 MyController extends AppController 类中的函数运行。该函数调用此函数以获取唯一的上下文编号。这个想法是这个数字应该从一个帖子保留到下一个帖子(或者一个通过 Controller 类函数运行到下一个)。但是 Configure::check() 总是失败,并且 unique32 总是重新创建,所以这个函数总是返回 1。

有谁知道如何让Configure::write() 从一个帖子保留到下一个帖子?

public function getUnique32() {
    if (!Configure::check('unique32')) {
        $unique32 = 0;
        echo "unique32 starts at 0";
    } else {
        $unique32 = Configure::read('unique32');
        echo "unique32 is $unique32";
    }
    if (++$unique32 >= 0xffffffff) {
        $unique32 = 0;
        echo "unique32 is reset to 0";
    }
    Configure::write('unique32', $unique32);
    return $unique32;
}

【问题讨论】:

    标签: php session cakephp cakephp-3.0


    【解决方案1】:

    Configure 类不会在页面请求之间保留数据。改用类Session

    在 CakePHP 3.x 中,您的代码应如下编写:

    public function getUnique32() {
    
        $session = $this->request->session();
        if (!$session->check('unique32')) {
            $unique32 = 0;
            echo "unique32 starts at 0";
        } else {
            $unique32 = $session->read('unique32');
            echo "unique32 is $unique32";
        }
    
        if (++$unique32 >= 0xffffffff) {
            $unique32 = 0;
            echo "unique32 is reset to 0";
        }
    
        $session->write('unique32', $unique32);
        return $unique32;
    }
    

    对于 CakePHP 2.x,您可以在代码中将一个类替换为另一个类。

    来自 Cookbook 3.x:

    【讨论】:

    • 好消息。请问Session会持续多久?直到有一个“服务 httpd 重启”是我一直在寻找的。顺便说一句,这似乎是 CakePHP 文档中的一个严重遗漏,除非你知道引用在哪里。
    • 会话会持续指定的时间。见stackoverflow.com/questions/14470018/…。会话存活 service httpd restart,因为它们基于 cookie 和 sess_xxxxxx 文件,只有在它们过期时才会被清除。
    • 好的,我想在重启后幸存下来也是可以的。最后一个问题。简单地用一个类替换另一个类是行不通的。我需要“use”语句和/或“require_once”语句吗?还是我需要初始化会话?你确定它不应该是“CakeSession”而不是“Session”。
    • 我刚刚意识到您使用的是 CakePHP 3.x。将编辑我的答案。
    猜你喜欢
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 2019-11-28
    • 2016-09-27
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多