PHP-php扩展memcache set方法的默认值问题

发布于 2017-10-23 23:43:56 字数 229 浏览 1413 评论 1

php扩展 memcache(注意这里不是memcached)的set方法后两个参数只有说明是什么作用,没有说他的默认值,既然这两个参数是可以省略的,那么他应该有默认值,我查了好些地方,都没有说明。官方文档也是。
有谁知道的请给个说明,还有我使用ktserver做nosql数据库,使用的是memcache扩展进行的连接,不知道后面两个参数省略掉的话是否是永久存储,也就是按0处理,我昨天也做了个测试,过了一段时间发现还是可以获取的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晨说ぺ晚安 2017-10-25 20:29:17

看了一下代码

PHP_FUNCTION(memcache_set)
{
    php_mmc_store(INTERNAL_FUNCTION_PARAM_PASSTHRU, MMC_OP_SET);
}

memcache_set是通过php_mmc_store实现的(实际上memcached协议里也是STORE命令):

static void php_mmc_store(INTERNAL_FUNCTION_PARAMETERS, int op) /* {{{ */
{
    mmc_pool_t *pool;
    mmc_request_t *request;
    zval *keys, *value = 0, *mmc_object = getThis();
    long flags = 0, exptime = 0, cas = 0;

    if (mmc_object == NULL) {
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Oz|zlll", &mmc_object, memcache_pool_ce, &keys, &value, &flags, &exptime, &cas) == FAILURE) {
            return;
        }
    }
    else {
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|zlll", &keys, &value, &flags, &exptime, &cas) == FAILURE) {
            return;
        }
    }

这是php_mmc_store开始解析参数的部分,之后就组装和发送命令,flags和exptime都没改变。

所以flags和exptime默认为0,对应到memcached的协议就是没额外参数,不过期。

(这个额外参数其实只对客户端有意义,memcached在返回数据时会同时返回这个flags,然后客户端进行相应处理,例如压缩解压)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文