0

我用谷歌搜索,但只能找到最大数量的文章的答案。

问题:简短版本:

Joomla 2.5 可以在共享主机上处理多少个可能的类别(带有子类别)。我必须期待哪些问题?

问题:长版本:

我正在为建筑师建立一个网站。内容结构如下所示

HOUSES
    Architect A
      Project 1
      Project 2
      ...

    Architect B
      Project 1
      Project 2
      ...

Places
    Architect C
      Project 1
      Project 2
      ...

    Architect D
      Project 1
      Project 2
      ...

等等。最明显的是将房屋和地点作为类别。Architect A, Architect B ...作为子类别,项目作为文章。一方面,这将保留使用 Joomlas 博客视图等的能力,而不使用第三方 CCK 扩展,但另一方面,这可能会导致 300 多个类别。

感谢您一直以来的出色投入,

托尼

4

3 回答 3

2

唯一的限制是理论上的,很大程度上取决于您的托管环境。只要知道添加的越多,加载类别数据所需的内存就越多,并且可能会使用户界面复杂化,具体取决于一次可见的数量。

于 2013-03-24T21:16:28.897 回答
2

您正在根据#__categories表格查看 2147483647 个可能的类别。

在 Joomla!2.5 对 Categories 表的定义你会发现:

CREATE TABLE `#__categories` (
  `id` int(11) NOT NULL auto_increment,
  `asset_id`

  <snip ... >

  `language` char(7) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `cat_idx` (`extension`,`published`,`access`),
  KEY `idx_access` (`access`),
  KEY `idx_checkout` (`checked_out`),
  KEY `idx_path` (`path`),
  KEY `idx_left_right` (`lft`,`rgt`),
  KEY `idx_alias` (`alias`),
  INDEX `idx_language` (`language`)
)  DEFAULT CHARSET=utf8;

正如您所看到的,主键被定义为一个int,因此MySQL 上的最大值INT(2147483647)和默认起点 1 导致超过 21 亿个类别。看到这个*关于 MySQL 上的 AUTO_INCREMENT 的注意事项

笔记

每个表只能有一个AUTO_INCREMENT列,它必须被索引,并且不能有DEFAULT值。一个AUTO_INCREMENT列只有在它只包含正值时才能正常工作。插入一个负数被认为是插入一个非常大的正数。这样做是为了避免数字从正数“环绕”到负数时出现精度问题,并确保您不会意外获得AUTO_INCREMENT包含0.

在共享主机上,您将在达到主键的此限制之前很久就用完数据库空间#__categories- 类别表中的其余记录指定的空间比主键使用的空间多约 1300 倍。(大致

因此,您更有可能让正常内容影响托管限制,而不仅仅是类别表。

于 2013-03-24T23:10:41.393 回答
0

查看在我的测试站点中完成的一些测量(J2.5.x,未使用 J3.x 进行测试,但应该相同):

每个脚本执行的常见 PHP 内存限制为 40MB(服务器默认)

您可以期望使用大约 800 个类别来击中它,从而得到内存耗尽的致命错误(权限检查将占用 26MB 将剩余内存留给其他东西......)

那是在创建类别树并检查权限的地方,例如 Joomla 文章表格

注意:如果您是超级管理员,则类别权限检查不会占用任何内存

注意:内存限制为 128MB,您最多可以拥有(大约)3500 个类别

此外,如果有 5000+ 或 10000+ 个类别,您会开始遇到一些中小型性能问题,但这确实是太多类别

于 2013-07-20T20:00:43.553 回答