zend-framework - 操作码 (APC/XCache)、Zend、Doctrine 和自动加载器

标签 zend-framework doctrine apc opcode xcache

我正在尝试使用 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/

相关文章:

zend-framework - Zend Framework 如何回显 SUM 查询的值

php - Symfony 2 - 试图从命名空间 "apcu_fetch"调用函数 "Doctrine\Common\Cache"

mysql - Symfony 在生产环境中的奇怪错误 "A new entity was found through the relationship"

php - APCu 无法在网络服务器上运行

PHP ob_start vs opcode APC,解释差异和实际用法?

php - Zend框架及参数

php - 未定义的类常量 'MYSQL_ATTR_INIT_COMMAND' ; phpinfo 显示没有 PDO 扩展,但 php -i (php -m) 显示

zend-framework - 使用 Zend Framework 显示语言环境百分比

php - Doctrine 和 Symfony 中的 MySQL 用户定义变量

linux - 在64位Centos5上安装APC,phpize错误