【问题标题】:How can I use a single table from an external database on a site which uses an identical second database?如何在使用相同第二个数据库的站点上使用来自外部数据库的单个表?
【发布时间】:2016-08-06 02:05:21
【问题描述】:

我有两个网站,我想让它们在 MySQL 中使用相同的用户表。

一个站点没有用户,另一个站点有 20,000 多个用户。我们将没有用户的站点称为 Site1,将具有 20k 用户的站点称为 site2。

我希望在 site1 或 site2 上注册的人在两个网站上都拥有相同的帐户,而无需设置两个帐户。

两个站点都对 users 表使用完全相同的数据结构,因此如果我可以在 site1 上为 site2 使用 users 表,那么两个站点都可以使用同一个表。也就是说,在site1上注册的用户,也会自动在site2上拥有一个帐号。

看似简单的方法是将用户表从站点 1 导入到站点 2,现在它被复制了。然而,这并不容易。

site1 有固定用户注册,每天 30 到 50 个;一旦我制定了这个新策略,它将是自我营销,因此我还将为 site2 吸引用户。

如您所见,逐个导入新用户是不可行的,每天导入用户也不合理。

所以我想做的是让site2简单地使用来自site1的外部数据库。

请注意,site1 和 site2 都在同一个服务器上,在同一个 cpanel 和同一个 phpmyadmin 中。所以我们不必担心远程访问另一台服务器,因为它们在同一台服务器上。但是,它们具有不同的数据库名称(当然)和不同的数据库用户/密码。

此外,我无法将数据库合并到一个数据库中,因为这些表都具有相同的名称但数据不同(两个不同的站点但使用相同的数据库系统)。否则,对 site2 的更改也会更改 site1,反之亦然,这是我不想要的,因为它们是两个不同的网站。

那么,我怎样才能允许 site2 只使用来自 site1 数据库的一个外部(但在同一台服务器上)表(用户表)?

【问题讨论】:

  • 是的,你可以做到。从站点 1,如果用户正在登录,则在站点 1 数据库中检查用户是否在数据库中,如果是,则允许用户登录。如果不可用,则创建另一个 mysql_pconnect ,它将返回新的数据库连接,并将其存储在 $conn2 变量中。使用这个新的连接变量,您现在可以签入 site2 db。如果用户可用,让他登录。如果用户来自 site2,则来自 site2 的相同过程。

标签: php mysql database external


【解决方案1】:

我对 cpanel 了解不多,我不确定您的托管公司在多大程度上管理该服务,但我想应该可以让 site2 的代码连接到 site1 的数据库具体查询。只需使用 site1 的数据库名称(和访问凭据)建立单独的连接。

如果这不可行,另一种选择是在 site1 的代码中创建一种 API 层,并通过例如 HTTPS 将这个 API 公开给 site2(即 site2 的代码将使用 HTTP 函数(例如 curl 库)与 site1 通信并执行与身份验证相关的功能(即登录、注册等...)。

第一种方法可能更容易实施。如果您将来有更多站点,或者希望在数据库结构、托管位置、谁可以直接访问它们等方面更加灵活,则第二种方法可能更具可扩展性......

【讨论】:

  • 是的,这正是我要问的,“使site2的代码连接到site1的数据库以进行特定查询”。确切地。那么我该怎么做呢?
  • site2如何连接到site2的数据库?你传递数据库服务器域吗?港口?用户?密码?只需通过 site1 的那些...
  • 两个站点都通过一个包含访问详细信息的全局配置文件访问数据库。
  • 在您的代码中的某个地方,您实际上创建了一个连接,对吧?使用 mysql_connect() 或类似的东西。要连接,您需要传递有关要连接的服务器的信息的参数,对吧?因此,专门用于身份验证,您可以获取另一组参数(site1 数据库的参数)(来自同一配置文件或另一个配置文件)并传递它们而不是“通常”参数......
【解决方案2】:

你有一些选择来做到这一点。例如,您可以创建一个脚本来读取一个数据库上的新用户并将其插入第二个数据库,然后每分钟使用 cron 作业运行此脚本。

第二个选项是连接到 Site2 数据库并在该数据库上为 Site1 查询用户表(用于身份验证、读取等)。但缺点是您无法将该表与 Site1 数据库中的其他表连接起来。

另一个选项是复制您的用户表。您可以搜索 MySQL 复制以获取更多信息。

【讨论】:

    猜你喜欢
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 2014-08-09
    • 1970-01-01
    • 2013-09-25
    相关资源
    最近更新 更多