5

我负责我公司的操作码缓存交换,我们正在从 eaccelerator 迁移到 PHP 5.5 附带的 Zend OPCache。

当我在 CLI 中访问 PHP 时,OPCache 似乎工作正常:

PHP 5.5.5 (cli) (built: Oct 15 2013 10:29:13)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

但是当我通过 Apache 访问我的网站时,与不使用操作码缓存的相同页面相比,基准测试显示没有任何改进。此外,get_loaded_extensions(true)返回一个空数组。

谁能回答我为什么它不工作?

我正在使用 Windows 7,Apache Lounge 的 Apache 2.4.6,windows.php.net 的 PHP 5.5.5。


编辑:

根据要求,我的 OPCache 配置:

[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
;opcache.max_wasted_percentage=5
;opcache.use_cwd=1
;opcache.validate_timestamps=1
opcache.revalidate_freq=60
;opcache.revalidate_path=0
;opcache.save_comments=1
;opcache.load_comments=1
opcache.fast_shutdown=1
;opcache.enable_file_override=0
;opcache.optimization_level=0xffffffff
;opcache.inherited_hack=1
;opcache.dups_fix=0
;opcache.blacklist_filename=
;opcache.max_file_size=0
;opcache.consistency_checks=0
;opcache.force_restart_timeout=180
;opcache.error_log=
;opcache.log_verbosity_level=1
;opcache.preferred_memory_model=
;opcache.protect_memory=0
4

3 回答 3

11

找到了答案!

zend_extensionextensions 必须设置完整路径,而不是相对路径。

在这种情况下,zend_extension="C:\Apache24\php\ext\php_opcache.dll"解决了我的问题。

于 2013-10-21T14:43:45.120 回答
5

WINDOWS PHP 7 解决方案

默认情况下,php.ini 文件中有 opcache 设置,例如 opcache.eneable,但启用 opcache 不会生效,除非您添加:

zend_extension=php_opcache.dll

到你的配置文件。请记住它是 zend_extension 而不是常规扩展!

于 2015-12-21T16:10:06.467 回答
0

确保你的 phpinfo() 中有“opcache”;报告。默认情况下

此 PECL 扩展的 DLL 当前不可用。另请参阅Windows部分的构建。

您能否确认已加载扩展程序?

于 2013-10-21T15:49:41.467 回答