我正在尝试使用 APC 或 XCache 作为操作码来缓存我的 php 页面。我将它与 Zend 和 Doctrine 一起使用,但它的自动加载器有问题。

如果我尝试使用APC,则会得到以下信息:

Fatal error: spl_autoload() [<a href='function.spl-autoload'>function.spl-autoload</a>]:
  Class Doctrine_Event could not be loaded in
  C:\\[mydir]\\library\\doctrine\\Doctrine\\Record.php on line 777

如果我尝试使用 XCache,我会得到以下信息:
PHP Fatal error: Cannot redeclare class Zend_Registry in
  C:\\[mydir]\\library\\zendframework\\Zend\\Registry.php on line 0

我在 Windows 机器上运行 Zend 1.9.1、Doctrine 1.1。

我的 bootstrap 如下:
set_include_path(dirname(__FILE__).'/../library/zendframework'
. PATH_SEPARATOR . dirname(__FILE__).'/../library/doctrine'.....

require 'Zend/Loader/Autoloader.php';

$loader = Zend_Loader_Autoloader::getInstance();
$loader->suppressNotFoundWarnings(false);
$loader->setFallbackAutoloader(true);

从我读到的内容来看,使用 APC 或 xcache 几乎是提高性能的必要条件,但我似乎无法让它工作。有任何想法吗?

最佳答案

您可以在 index.php 的末尾放置一个“Zend_Session::writeClose(true);”。
这将在必要的对象(Zend_Loader 等)被破坏之前将 session 写入持久状态。

更好 :将其注册为 shutdown function
因此,即使您使用 exit()die()fatal error ,它也会被执行:

register_shutdown_function(array('Zend_Session', 'writeClose'), true);

关于zend-framework - 操作码 (APC/XCache)、Zend、Doctrine 和自动加载器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1364750/

10-09 22:15