Использование Zend Optimizer+ с php-fpm + nginx
Примечание: я говорю о компоненте, ранее работавшем в Zend Server, но теперь это автономный модуль с открытым исходным кодом, который будет поставляться в комплекте с PHP 5.5, имеет преимущество в производительности и удобстве использования по сравнению с более широко используемым APC.
Теперь вот моя проблема, я не могу заставить Zend Optimizer+ работать должным образом с моим сайтом на основе codeigniter (PHP Framework), моя конфигурация отладки выглядит следующим образом:
zend_optimizerplus.enable=1
zend_optimizerplus.memory_consumption=128
zend_optimizerplus.interned_strings_buffer=8
zend_optimizerplus.max_accelerated_files=4000
zend_optimizerplus.revalidate_freq=10
zend_optimizerplus.fast_shutdown=1
zend_optimizerplus.enable_cli=1
zend_optimizerplus.optimization_level=0
zend_optimizerplus.error_log=/var/log/zendop.log
Как только ZO+ включен, я начал видеть журналы php-fpm, такие как эти (но ничего больше, без ошибки segfault, без записей в журнале ошибок ZO+):
[13-Mar-2013 00:58:45] WARNING: [pool www] child 6734 exited with code 1 after 176.326628 seconds from start
[13-Mar-2013 00:58:45] NOTICE: [pool www] child 6761 started
В основном рабочий процесс php был остановлен и перезапущен. И все страницы выводятся только частично. Я включил отображение ошибок PHP с error_reporting(E_ALL & ~E_NOTICE);
но все еще не вижу никакой ошибки от самого PHP.
Все, что я могу найти в журнале Nginx, были такие записи:
2013/03/13 00:22:47 [error] 1761#0: *14 readv() failed (104: Connection reset by peer) while reading response header from upstream, client: [my ip address], server: [my server name], request: "GET /leave HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: [my host name].
2013/03/13 00:22:47 [error] 1761#0: *17 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: [my ip address], server: [my server name], request: "GET /leave HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: [my host name].
Похоже, я не могу понять, что происходит, и могу подтвердить, что сайт работает без ZO+ нормально, и исходный код ZO+, по-видимому, правильно компилируется и устанавливается (make test также прошел правильно, хотя не так много тестов для запуска).
Кто-нибудь имел опыт работы с Zend Optimizer+? Я удивлен, что нигде на этом сайте не упоминается о готовящемся к выпуску PHP-модульном модуле.
php -v
PHP 5.3.10-1ubuntu3.5 with Suhosin-Patch (cli) (built: Jan 18 2013 23:40:19)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
nginx -v
nginx version: nginx/1.1.19
(Если этот пост относится к stackoverflow, пожалуйста, помогите перенести, хотя я не вижу здесь ошибки, связанной с программированием.)
1 ответ
После тестирования с PHP 5.3/5.4 без исправления Suhosin я могу подтвердить, что исходная проблема действительно вызвана Suhosin, и, к сожалению, общий обходной путь suhosin.simulation = On
не исправит такую несовместимость с Zend O+.
Подробности можно найти в этом билете GitHub: https://github.com/zend-dev/ZendOptimizerPlus/issues/63, если вы заинтересованы.