Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
memcache可以在PHP中存储数据结构,比如splqueue吗?_Php_Memcached_Queue - Fatal编程技术网

memcache可以在PHP中存储数据结构,比如splqueue吗?

memcache可以在PHP中存储数据结构,比如splqueue吗?,php,memcached,queue,Php,Memcached,Queue,我正在尝试将splqueue存储到memcache(而不是memcached)。以下示例代码是用于此目的的简单测试 $mc = new Memcache(); $mc->addServer("127.0.0.1", 11300); $mc->addServer("127.0.0.1", 11301); $mc->addServer("127.0.0.1", 11302); $q = new SplQueue(); $q->enqueue(10); $q->enqu

我正在尝试将splqueue存储到memcache(而不是memcached)。以下示例代码是用于此目的的简单测试

$mc = new Memcache();
$mc->addServer("127.0.0.1", 11300);
$mc->addServer("127.0.0.1", 11301);
$mc->addServer("127.0.0.1", 11302);

$q = new SplQueue();
$q->enqueue(10);
$q->enqueue(20);
$q->count(); // line a

$mc->set("spl_queue", $q);
$p = $mc->get("spl_queue");
$p->count(); // line b
当我运行这段代码时,我在a行得到2,在b行得到0。所以这可能意味着在memcache中存储数据结构不起作用

所以我有以下三个问题

  • 我是否做错了什么,或者是否有其他方法将splqueue存储在memcache中

  • 我还为Spl数据结构找到了SplObjectStorage。这能解决我的问题吗

  • memcached(不是memcache)可以存储数据结构吗

  • Memcache::set()
    将序列化非标量值
    SplQueue
    似乎没有实现SPL
    Serializable
    接口,因此无法依靠它正确地序列化/取消序列化。您可以扩展
    SplQueue
    ,实现
    Serializable
    ,然后为此构建一些适当的序列化/非序列化策略

    $mc = new Memcache();
    $mc->addServer("127.0.0.1", 11300);
    $mc->addServer("127.0.0.1", 11301);
    $mc->addServer("127.0.0.1", 11302);
    
    $q = new SplQueue();
    $q->enqueue(10);
    $q->enqueue(20);
    $q->count(); // line a
    
    $mc->set("spl_queue", $q);
    $p = $mc->get("spl_queue");
    $p->count(); // line b
    
    SplObjectStorage
    确实实现了
    Serializable
    ,因此我希望它能够正确地进出
    Memcache

    对于其他SPL结构,您应该检查
    Serializable
    的实现


    希望这有帮助。

    是的。谢谢你指出。我已经更新了我的代码