将 Zend Optimizer+ 与 php-fpm + nginx 结合使用

将 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+ 源似乎可以正确编译和安装(尽管没有太多测试需要运行,但 make 测试也正确通过了)。

有人使用过 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

在使用未安装 Suhosin 补丁的 PHP 5.3/5.4 进行测试后,我可以确认原始问题确实是由 Suhosin 引起的,不幸的是,常见的解决方法suhosin.simulation = On无法修复与 Zend O+ 的这种不兼容问题。

详细信息可在此 github 票证中找到:https://github.com/zend-dev/ZendOptimizerPlus/issues/63,如果你感兴趣的话。

相关内容