【问题标题】:Wordpress multi-user, custom database, potential concurrency problems when using global wpdbWordpress 多用户、自定义数据库、使用全局 wpdb 时潜在的并发问题
【发布时间】:2015-06-24 08:33:15
【问题描述】:

我正在开发一个 Wordpress 网站,该网站将处理用户注册、朋友、团队和足球锦标赛括号。

在这个网站上,我有 wordpress 核心数据库和一些我自己制作的自定义非 wordpress 表。

我想使用 Wordpress 全局 $wpdb 变量在我的自定义表上发出 CRUD 请求。

问题:

当多个用户同时使用 $wpdb 变量时,我会遇到并发问题吗?

例子:

有 10 个用户在线,每个用户都对 sql_tournament 表进行 INSERT 调用。 $wpdb 上的 INSERT 命令在成功执行后会填充 $wpdb->insert_id 变量。每个用户的 INSERT 请求会为每个人(又名全局)更改 $wpdb->insert_id 变量,还是每个人都有一个单独的 $wpdb 实例,使其使用安全,因为我可以安全地假设在检索 $wpdb->insert_id 时变量,我会得到同一个Session插入的表的ID。

代码示例:

function team_add( $name, $team_website = '', $team_logo_url = '' )
{
    global $wpdb;

    $return = $wpdb->insert( DB_TEAM,
        array(
            'name'          => $name,
            'team_website'  => $team_website,
            'team_logo_url' => $team_logo_url
        ),
        array(
            '%s',
            '%s',
            '%s'
        )
    );

    if ( $return === false ) {
        throw new Exception( "Could not add team.." );
    }

    return $wpdb->insert_id;
}

【问题讨论】:

    标签: php mysql wordpress


    【解决方案1】:

    应该没有问题。

    每个用户请求都被单独解释 - 单独的请求之间不会传递任何内容。

    【讨论】:

      【解决方案2】:

      最后我会说,我使用了基于 Wordpress 安装的 Propel 2.0 ORM 来处理数据库请求,它运行得非常好。

      它无疑减少了开发时间,并使调试和维护代码变得非常容易。

      我能说的唯一缺点是,Propel 2.0 的在线文档很少,所以你必须对 SQL 和编程有一定的了解,这样你才不会卡住!

      【讨论】:

        猜你喜欢
        • 2014-09-06
        • 2020-10-03
        • 1970-01-01
        • 2020-04-17
        • 2013-06-19
        • 2019-01-16
        • 1970-01-01
        • 2016-10-05
        • 2013-09-20
        相关资源
        最近更新 更多