update_user_meta方法介绍

原文:Function Reference/update user meta

方法描述

更新指定用户ID的配置属性。

$prev_value参数来区别拥有相同键值和用户ID的配置属性。

如果要更新的配置属性对于某个用户不存在,那就会新增这个配置属性。

使用方法

<?php update_user_meta( $user_id, $meta_key, $meta_value, $prev_value ); ?>

参数

$user_id
(integer) (required) 用户ID。
默认:None

$meta_key
(string) (required) 要更新的wp_usermeta表中存储的配置属性键名称。
默认: None

$meta_value
(mixed) (required) 将要更新的新的配置属性值,必须与现有的不一样。ArrayObjects都会被自动序列化。注意使用对象可能会导致报错。
默认: None

$prev_value
(mixed) (optional) 要检查的之前的属性值。
默认: ''

返回值

(int/boolean)
如果要更新的配置属性不存在,那么返回新创建的配置属性ID,更新成功返回true,更新失败返回false

示例

下面这个例子示范如何更新用户的站点属性

<?php
$user_id = 1;
$website = 'http://wordpress.org';
update_user_meta($user_id, 'user_url', $website);
?>

下面这个例子示范如何检测错误:

$user_id = 1;
$new_value = 'some new value';

// will return false if the previous value is the same as $new_value
update_user_meta( $user_id, 'some_meta_key', $new_value );

// so check and make sure the stored value matches $new_value
if ( get_user_meta($user_id,  'some_meta_key', true ) != $new_value )
    wp_die('An error occurred');
?>

注意

使用: update_metadata()
update_usermeta功能上有所变化,不过这个方法已经弃用了:

  • 如果新的要更新的值为空,update_user_meta不会删除这个配置属性
  • 具体操作有所不同

源文件

update_user_meta()在这wp-includes/user.php.

相关

add_user_meta(), delete_user_meta(), get_user_meta(), update_user_meta(), get_user_option(), delete_user_option(), update_user_option(),

方法索引目录以及模板标签目录

`nvme_submit_user_cmd()` 函数是 NVMe 驱动中用于向 NVMe 设备提交用户命令的函数。该函数的实现如下: ```c int nvme_submit_user_cmd(struct request_queue *q, struct nvme_command *cmd, void __user *ubuf, void __user *meta, unsigned timeout) { ... struct nvme_ns *ns = q->queuedata; ... struct nvme_user_io io = { .opcode = cmd->common.opcode, .flags = cmd->common.flags, .control = cpu_to_le16((timeout ? NVME_IO_FLAGS_PRACT : 0) | NVME_IO_FLAGS_CQ_UPDATE | NVME_IO_FLAGS_SGL_METABUF), .metadata = (__u64)meta, .addr = (__u64)ubuf, .slba = cpu_to_le64(cmd->rw.slba), .nlb = cpu_to_le16(cmd->rw.nblocks), .dsmgmt = cpu_to_le16(cmd->rw.dsmgmt), .reftag = cpu_to_le16(cmd->rw.reftag), .apptag = cpu_to_le16(cmd->rw.apptag), .appmask = cpu_to_le16(cmd->rw.appmask), }; ... ret = nvme_submit_user_cmd_hw(q, ns, &io, &cmd->common, timeout); ... return ret; } ``` 该函数的主要作用是将用户命令转换为 `nvme_user_io` 结构体,并调用 `nvme_submit_user_cmd_hw()` 函数将该命令提交给 NVMe 设备。下面是对该函数的参数及关键代码进行分析: - `q`:请求队列指针,用于指定 NVMe 设备所在的请求队列。 - `cmd`:NVMe 命令结构体指针,包含了要提交的 NVMe 写入命令的相关信息。 - `ubuf`:用户数据缓冲区的指针,该缓冲区包含了要写入存储介质的数据。 - `meta`:元数据缓冲区的指针,该缓冲区用于存储 NVMe 设备返回的写入操作结果。 - `timeout`:命令超时时间,以毫秒为单位。 该函数首先从请求队列中获取 NVMe 命名空间指针 `ns`,然后将用户命令转换为 `nvme_user_io` 结构体,并设置了一些命令的控制标志位。接着,该函数调用 `nvme_submit_user_cmd_hw()` 函数将命令提交给 NVMe 设备。 在 `nvme_submit_user_cmd_hw()` 函数中,NVMe 驱动会将 `nvme_user_io` 结构体中的数据转换为 NVMe 命令数据结构,并将该命令放入命令队列中。然后,NVMe 驱动会等待命令完成,并将命令的执行结果存储到元数据缓冲区中。最后,驱动程序会更新命令队列和完成队列的指针,并返回命令的执行状态。 在 NVMe 驱动中,`nvme_submit_user_cmd()` 函数是将用户命令提交给 NVMe 设备的入口函数,它的实现非常简单,主要是将用户命令转换为 NVMe 命令,并调用硬件相关的函数将命令提交给 NVMe 设备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值