首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应该通过$wpdb-> close ()关闭$wpdb

应该通过$wpdb-> close ()关闭$wpdb
EN

WordPress Development用户
提问于 2020-12-21 00:32:40
回答 1查看 701关注 0票数 2

我一直在为我的站点编写一些自定义插件,我想知道如何正确地与$wpdb交互。我的插件使用全局$wpdb连接执行几个查询。我注意到$wpdb-> close ();方法已经添加到WordPress中,以关闭数据库连接对象。

我的问题是:插件应该在执行查询后关闭连接吗?

我在某个著名插件的文件夹上被搜索过(比如排名数学,Yoast)。他们经常使用$wpdb,但我在代码中找不到$wpdb->close()。我的意思是,在函数的末尾,它们不关闭查询。

例如,从上周开始,我一直在为统计邮件编写一个函数。

代码语言:javascript
复制
    function get_posts_count_from_last_week($post_type = 'post')
 {
        global $wpdb;
        $numposts = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) " . "FROM " . $wpdb->posts . " WHERE post_status='publish' AND post_type= %s AND post_date> %s", $post_type, date('Y-m-d H:i:s', strtotime('-168 hours'))));
        return $numposts;

}

我得到了大量的“WordPress database error Commands out of sync; you can’t run this command now for query SELECT”,所以我必须在返回之前放置$wpdb->close();,而在返回之前,我根本没有得到Commands out of sync

我很困惑,为什么我必须关闭连接,而其他插件不这样做!顺便说一句,在我的主题中,我有一些关于global $wpdb的函数,但是,也没有任何$wpdb->close()可以关闭。

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2020-12-21 01:56:26

这个close()函数是为了数据库抽象的完整性而添加的。如果数据库在插件或主题中过早关闭(正如您正在使用),则下一次打给wpdb::query()会重新打开连接。

您的Commands out of sync错误是MySQL错误,而不是WordPress错误,它可能来自您正在使用的插件或主题。谷歌搜索wordpress database commands out of sync会产生很多可能的问题,包括缓存插件。尝试禁用所有插件并切换到默认主题(比如二十个);如果问题消失了,打开插件直到找到罪魁祸首。那就联系那个插件的支援人员。

票数 3
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/380171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档