我们的网站有一个冗长的AJAX功能,可以将内容附加到用户的购物车中,购物车以数组的形式存储在usermeta
桌子
函数如下所示:
$cart = get_user_meta($userID, \'cart\', true);
$cart[] = $newItemID;
update_user_meta($userID, \'cart\', $cart);
我们遇到了一个问题,当用户尝试快速连续地将多个项目添加到购物车时,更新\\u user\\u meta的最终调用有时会用旧数据覆盖购物车。
据我所知,这是一种竞争条件,部分原因是WordPress将数组数据存储为序列化字符串,而不是一组表行。
我知道我可以创造一个cart
表并使用查询来管理它,但我希望有一种方法可以通过现有的get\\u user\\u meta/update\\u user\\u meta函数来实现。