探讨当年 discuz 出品的 5d6d 是怎么实现的

2020-02-26 20:03:05 +08:00
 luguiyao

先说说 5D6D 实现了哪些功能,解决了哪些需求吧

1.5D6D 注册后自动生成 discuz 论坛,解决了部署方便快捷的需求;

2.5D6D 生成的论坛核心程序是同一个,并不会同样的程序生成多份(当年我向管理反映问题时,管理在论坛目录下创建了个临时文件进行调试,我在另外论坛下访问同样可以访问到,从这点可以进行佐证)。解决的是统一管理,便于维护的需求;

3.附件和数据表可以导出,数据独立,(貌似一开始是需要花金币才可以导出,最后需要购买官方虚拟主机才可以导出)。数据机动灵活,随时可以拆分。

然后说说我的猜想,可能说得不对,望大佬指正

第 1 点实现应该不难,生成的数据表应该加了字段,很可能是根据在 5D6D 上注册用户的 UID 来关联的;

第 2 点把临时文件和附件路径同样做了修改,应该也是根据 UID 来分别存放的;

第 3 点实现方式同第 2 点一样。

我想到的一些疑问:

以上方面实现后,怎么通过访问域名来判断识别要展示的某个论坛呢?因为程序是同一个,配置的数据库也是同一个,按一般的情况,多个域名绑定在同一台服务器上,展示的内容是一样的。这里是通过 HTTP_HOST 获取关联的 UID 然后读取对应论坛的数据么?那么数据库其实只有一个吧?但是很奇怪,当时我申请数据导出的时候,获取到的是数据库原文件(也就是直接在数据库目录下打了个压缩包给我,并不是导出的 sql 文件),如果是统一在一个数据库里肯定是通过 SQL 语句 where uid 来导出才是。

我想到的暂时只有这些,想了解一下真实的情况(如果有当年参与该项目的大佬看到的话),或者有经验的大佬们说说最有可能实现的方法,还有我没有想到的一些技术上的难题。

以上纯属小白的一些疑问和猜想,想得比较简单,请各位大佬们不要见笑,为小白扩展下知识。

10915 次点击
所在节点    PHP
58 条回复
xiaoyanbot
2020-02-27 07:54:07 +08:00
修改 php 程序, 根据不同的访问域名, 链接不同的数据库即可
hopboy
2020-02-27 08:30:43 +08:00
5d6d
lunqun
topzj
满满都是回忆
leonard916
2020-02-27 09:01:29 +08:00
這種應該是加載一套配置文件,代碼都是一樣的。
youx
2020-02-27 09:35:17 +08:00
发展轨迹是:WEB 在线聊天室 -- BBS 论坛 -- QQ 群 -- 微信群
krixaar
2020-02-27 10:10:56 +08:00
@cnzfq multisite,自带功能,去 wp-config 里加个参数就开了
yu1u
2020-02-27 10:51:22 +08:00
没人想起 phpwind 吗
yu1u
2020-02-27 10:51:48 +08:00
还有 uueasy.ocom 免费论坛
tzheng
2020-02-27 10:53:41 +08:00
既然大家都在报菜名我就跟风回忆一下 70bb
Keyes
2020-02-27 10:54:30 +08:00
5d6d,这个简直暴露年龄,没想到还有人记着
WinG
2020-02-27 10:57:11 +08:00
知道 5d6d 至少已经 30 了吧。
ccc008
2020-02-27 11:02:25 +08:00
回想起来,那时候的互联网环境简直是宽松的不要不要。
coosir
2020-02-27 11:03:14 +08:00
1. 每个站用独立的数据库
2. 所有站用同一套代码
3. 访问不同子域名对应不同站点,走对应站点的数据库
fuxkcsdn
2020-02-27 11:21:36 +08:00
在入口文件根据子域名加载不同的配置文件,数据库独立(简单,但 ddl 的时候必须每个数据库都执行)或者用个 site_id 做区分(麻烦,得修改 discuz 源码)

伪代码
```php
$subDomain = $_SERVER['SERVER_NAME'];
$domainMap = require(GLOBAL_CFG_PATH . '/domain.map.php');

if (!isset($domainMap[$subDomain]) {
// redirect to 5d6d home page
}

$config = require(SUBDOMAIN_CFG_PATH . $domainMap[$subDomain] . '/config.php');

// 常规的 discuz 流程
```

添加站点的时候也无非就是修改 domain.map.php 文件(用缓存的话就是写入缓存),然后拷贝一份配置模板到指定目录

nginx 或 apache 那边 server_name 配置成支持通配符即可
type
2020-02-27 11:23:31 +08:00
@ccc008 黄金时代
chinvo
2020-02-27 11:26:14 +08:00
@shansing #2 在入口用域名查 admin 库的数据得到对应的数据库配置,然后设置 typecho 的数据库

5d6d 应该也是这样的逻辑
hiyouli
2020-02-27 11:32:10 +08:00
这么多年竟然还有人记得 5D6D,我的领地。哈哈哈。
哎,都是回忆。
zsen
2020-02-27 11:41:30 +08:00
@luguiyao 改过商城和 WP 系统,根据域名调用对应的配置文件(简单一点就配置文件名与域名一样就好了)。
然后配置文件中有数据库配置、上传文件目录、模版文件目录等等

除了程序是一样的,数据库、图片、文件等等都是独立的。甚至可以针对单独的站点做一些小的个性化的功能开发。
shansing
2020-02-27 12:21:13 +08:00
@cnzfq 记得很久以前 WordPress MU 就并入 WordPress 了,你去网上找找看。
Zheming
2020-02-27 12:34:31 +08:00
我还申请过,我还没 30
WeAreNoName
2020-02-27 13:04:50 +08:00
@WinG 我 23,当年玩 5d6d 很疯狂。5d6d 让我选择了计算机专业

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/647813

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX