Wordpress多用户,自定义数据库,使用全局wpdb时潜在的并发问题

时间:2015-04-17 13:06:19

标签: php mysql wordpress wpdb

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

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

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

问题:

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

示例:

网上有10个用户,每个用户都对sql_tournament表进行INSERT调用。 $ wpdb上的INSERT命令,当成功执行时,填写$ wpdb-> insert_id变量。每个用户INSERT请求是否会为每个人更改$ wpdb-> insert_id变量(也就是全局),或者每个人都有一个单独的$ wpdb实例,这样可以安全使用,因为我可以放心地假设在检索$ wpdb-&gt ; 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;
}

2 个答案:

答案 0 :(得分:1)

应该有没有问题。

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

答案 1 :(得分:0)

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

它肯定会减少开发时间,并使调试和维护代码成为一个爆炸性的。

我能说的唯一的缺点是,Propel 2.0在线文档很少,所以你必须具备一般的SQL和编程知识,这样你才不会卡住!