PHP + APC + Zend: классы не могут быть найдены - PullRequest
1 голос
/ 02 сентября 2011

Я не могу заставить APC правильно работать с моим приложением Zend + Doctrine.Когда я включаю APC, я получаю сообщение об ошибке:

Неустранимая ошибка: доступ к необъявленному статическому свойству: экземпляр Zend_Loader_Autoloader :: $ _ в /var/www/libs/Zend/Loader/Autoloader.php on line92

Я видел множество людей, жалующихся на это, но никто, похоже, не решил их проблему, кроме этого парня: Доступ к необъявленным статическим свойствам: Doctrine \ ODM \ MongoDB \Mapping \ Driver \ AnnotationDriver ::

Я попробовал этот подход, обновив APC с 3.1.3 до 3.1.9.Это не сработало для меня.Я попытался включить nclude_once_override:

apc.include_once_override = 1

Не сработало.

Я также пытался заставить APC не кэшировать Zend_Loader_Autoloaderдобавив следующую строку в apc.ini:

apc.filters = Autoloader.php

Это решило основную проблему, но вызвало еще одну:

Предупреждение: call_user_func () ожидает, что параметр 1 является допустимым обратным вызовом, класс 'Zend_Loader' не найден в /var/www/libs/Zend/Loader/Autoloader.php в строке 472 Предупреждение: call_user_func () ожидает параметр1, чтобы быть действительным обратным вызовом, класс 'Zend_Loader' не найден в /var/www/libs/Zend/Loader/Autoloader.php в строке 472 Неустранимая ошибка: класс 'Doctrine_Event' не найден в / var / www / libs / Doctrine /Record.php в строке 801

Следующее, что я сделал, это заставил APC не кэшировать Zend_Loader

apc.filters = Autoloader.php, Loader.php

Решает проблему выше, но другие классы не могут быть найдены:

Неустранимая ошибка: класс 'Zend_Exception' не найден в /var/www/libs/Zend/Loader.php в строке 99

Я получил APC, чтобы не кэшировать Zend_Exception,но другие классы не будут найдены.

Обратите внимание, что ошибки возникают только со 2-го раза загрузки страницы, после очистки кэша.Загрузка первой страницы работает как талисман.

Кто-нибудь сталкивался с подобной проблемой и смог ее решить?

Большое спасибо.

1 Ответ

0 голосов
/ 05 октября 2012

Вам нужно session_write_close():

\Zend_Session::setSaveHandler($foo);
register_shutdown_function('session_write_close');
...