【问题标题】:Best practice for a hosted PHP application [closed]托管 PHP 应用程序的最佳实践 [关闭]
【发布时间】:2013-02-23 06:15:25
【问题描述】:

我用 CodeIgniter 编写了一个 PHP 应用程序。我计划将其作为托管应用程序(软件即服务)出售。

这些应用程序允许用户:

  • 创建帐户
  • 创建用户
  • 管理文件
  • 管理订单
  • 有一个通讯录
  • 正在搜索
  • 报告 等等。 它使用一个数据库。 最好的例子是新书。 (反正它不是我的竞争对手。)

我的问题是:

托管应用程序的最佳配置是什么?请记住,该应用程序可能会增长到数千名用户。

实际配置是:

  1. 存放代码 example.com/appfolder 的地方
  2. 用户将在 example.com 上创建帐户
  3. 在用户帐户上,每个用户都有一个链接以使用该应用程序

user1.example.com

user2.example.com

..................

所有子域都指向同一个 example.com/appfolder

  1. example.com 有一个数据库,用于记录用户及其每月付款
  2. 该应用程序托管在 example.com/appfolder 上,并根据 url 为每个用户选择一个单独的数据库。

对于 100、200、300 个用户来说一切看起来都很好,但如果我有 1000 或 2000 个用户,我将不得不管理和备份 1000 或 2000 个数据库(每个 3-5MB)

我知道我应该为所有用户建立一个单一的数据库,但这会使管理变得非常困难,并且用户数据库中存在敏感数据。

最重要的是,用户可以创建可以使用相同应用程序的用户,但只能在管理员用户创建的子域上(在 exmaple.com 上注册)

此配置是否会使拥有超过 2000 个管理员用户(即 2000 db)的专用服务器崩溃?

Basic 与 CMS 非常相似,但更专业。

有没有更实用的方法来做这个配置?

任何建议将不胜感激。提前谢谢了。

【问题讨论】:

  • 这 2000 个用户创建了用户并且都创建了其他内容。所以,它大约有百万条记录。我知道关系数据库可以管理它。我的问题是关于配置的。 2000 个数据库。磁盘 I/O 等等。如果您可以具有建设性,那么即使不说也可以。谢谢。
  • 您在寻找类似subdomain rewrite 的东西吗?所以 user1.example.com 被带到example.com/app?user=user1?
  • @bobthyasian:不。我已经这样做了。我对托管应用程序的最佳配置感兴趣。谢谢。
  • 由于一个问题,您的问题很难回答。您正在创建一个链。没关系。但我们不知道两端之间的链中有多少块。例如。一个用户只能在一个子域中处于活动状态,并且该子域也由管理员检查。那么每分钟或每小时将支付多少费用?它将给数据库服务器带来多少负载?你必须用数字说话并给出你如何实现它的实际代码,因为从理论上讲,这是不可能的。我给你1条建议。 Codeigniter 不适合这个。使用 laravel 以获得更多模块化结构。
  • 每个用户一个数据库当然看起来是错误的。您只是在转移“难以管理”的部分;正如您所说,2000 多个独立的数据库也不容易管理。您需要将其全部保存在一个具有明确相关数据和适当查询的数据库中。话虽如此,我对您的应用没有足够的洞察力来做出这样的断言。

标签: php mysql codeigniter-2 hosted-app


【解决方案1】:

为所有用户存储数据的单个数据库或分片数据库 (http://www.codefutures.com/database-sharding/) 比 2000 个数据库更快、更易于维护、更简单且全面优于 2000 个数据库。

编写您需要的代码来管理您的安全性,否则当您试图通过一个小的架构更改来更新 2000 个数据库时,您会自责。

我的建议是使用单个域(无子域),一旦您拥有 2000 个用户,您将有资金和资源进行改进。

【讨论】:

  • 感谢您的建议。我接受了你的回答。分片数据库的概念非常有趣,但成本不高。我将使用一个域和一个数据库。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 2020-08-05
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 2021-02-01
相关资源
最近更新 更多