用 WordPress 多站点构建博客平台:架构笔记

Written by

in

做「博客服务」而不是「第二个 WordPress」:平台层只做编排,内容能力全部复用核心。这是这套平台最关键的边界。

为什么选多站点

一个网络、无数博客。用户注册即建站,数据同库但逻辑隔离,备份与升级都只有一份代码要管。

配置状态机

每个博客的创建是一条可恢复的流水线:REQUESTED → SITE_CREATED → TEMPLATE_APPLIED → READY。每一步幂等,失败可重试:

// 每一步幂等,可安全重试
foreach ( $steps as $step ) {
    $result = $this->{$step}( $ctx );
    if ( is_wp_error( $result ) ) {
        $ctx->fail( $step, $result );
        return; // 下次从断点继续
    }
}

slug 竞态

缓存的 domain_exists 可能过期,两个并发注册可能同时通过检查。解法是在 MySQL GET_LOCK 锁内直查 wp_blogs 表:

SELECT GET_LOCK( 'bsp_slug_<md5>', 5 );
SELECT blog_id FROM wp_blogs WHERE domain = %s AND path = '/';

压测结果

三路并发创建同名 slug,收敛为恰好一个站点、一个失败提示。

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *