【问题标题】:apc.cache_by_default with CodeIgniterapc.cache_by_default 与 CodeIgniter
【发布时间】:2010-04-29 20:10:40
【问题描述】:

我正在尝试在我的本地主机上使用带有 wamp 2、PHP 5.3 和 CodeIgniter 1.7.2 的 APC(替代 PHP 缓存),但是如果我打开 cache_by_default 并启用 apc.stat,服务器将崩溃,我得到以下信息错误:

[apc-error] 无法重新声明类 ci_benchmark 在 C:\wamp\www\k\mvc\codeigniter\Common.php 在第 127 行。

我可以做些什么来解决这个问题?

【问题讨论】:

  • 我在 AWS Elastic Beanstalk 上运行 PyroCMS/Codigniter 时遇到类似问题。

标签: php codeigniter apc


【解决方案1】:

您是否与this user 核对过,看看他是否找到了比不启用 cache_by_default 更好的解决方案?

只有在启用 apc.cache_by_default 和 apc.stat 时才会发生这种情况吗?出于性能原因,您不想在生产服务器上运行 apc.stat。并且根本不需要在开发服务器上运行缓存,除了作为转移到生产之前的最终检查,此时您可以手动清除缓存。

您的生产服务器也是 Windows 机器吗?我只是问,因为很容易浪费大量时间来跟踪由于在不同环境中开发和运行而导致的错误和配置问题。如果生产环境与您的开发环境有很大不同,这是另一个支持关闭您的开发箱缓存并继续更有效地利用您的时间 - 开发您的应用程序的论据。

【讨论】:

  • 另一个线程的链接是我的,我没有找到解决方案,这就是为什么我在这里发布我的问题。这仅在我同时运行 cache_by_default 和 apc.stat 时才会发生,即使您应该在生产服务器上禁用 stat 我想知道为什么会发生这种情况。我的生产服务器不会是 Windows 机器。
【解决方案2】:

当你禁用 apc.stat 时,apc 似乎有相对路径的问题。 CodeIgniter 在主 index.php 文件中使用了一个相对路径,所以它会破坏一些东西。

打开 index.php 并更改它:

$system = '../system';

到这里:

$system = '/var/www/system';

用您的服务器到 CodeIgniter 系统文件夹的完整路径替换“/var/www/”。

【讨论】:

    【解决方案3】:

    尝试将该函数中的需求更改为 include_once。所以该文件将只包含一次。在这个函数中,我的意思是:system/codeigniter/Common.php: function &load_class($class, $instantiate = TRUE),我想这应该会有所帮助。我认为 APC 正在积极地缓存。

    【讨论】:

      猜你喜欢
      • 2012-11-01
      • 2012-01-15
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多