將 Zend Optimizer+ 與 php-fpm + nginx 一起使用
注意:我說的是以前 Zend Server 中的一個組件,但現在是一個獨立的模組並且是開源的,並且將與PHP 5.5捆綁在一起,它在性能/可用性方面優於更廣泛使用的 APC。
現在這是我的問題,我似乎無法讓 Zend Optimizer+ 與我的 codeigniter 驅動(PHP 框架)站點正常工作,我的調試配置如下:
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 日誌(但沒有別的,沒有段錯誤,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+ 源似乎可以正確編譯和安裝(使測試也正確通過,儘管沒有多少測試可以執行)。
**有人使用過 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,請幫助遷移,雖然我在這裡沒有看到與程式相關的錯誤。)
在使用沒有 Suhosin 更新檔的 PHP 5.3/5.4 進行測試後,我可以確認原來的問題確實是由 Suhosin 引起的,不幸的是,常見的解決方法
suhosin.simulation = On
無法解決與 Zend O+ 的不兼容問題。如果您有興趣,可以在此 github 票證中找到詳細資訊:https ://github.com/zend-dev/ZendOptimizerPlus/issues/63。