APC是否与PHP 5.4或PHP 5.5兼容?


103

似乎APC尚未进行更新以与php 5.4版本保持一致(我希望他们像最初计划的那样将APC包含在PHP核心中)。

对于当前的APC是否与php 5.4+兼容,我似乎找不到任何明确的答案。我设法找到适用于php 5.4的Ubuntu软件包,但无法安装php-apc软件包。


2
我认为您正在执行apt-get安装。您是否尝试过pecl安装?
Darragh Enright 2012年

是的,这确实有效。谢谢。事实证明,APC可以在5.4上正常工作,特别是在使用新特征功能时。
Greywire 2012年

1
@Darragh [只是让您知道]这方面有很多悬赏,您可能想回答。
Tiberiu-Ionuț Stan

1
不它不是。它的最新版本是在2012年,与PHP的较新版本不兼容
Abadis 2015年

Answers:


163

PHP 5.5中包含的Zend OPCache

2013年3月21日,PHP 5.5 beta 1发行,其中包括“ Zend OPCache” -看来它将逐步取代APC,因为它已包含在PHP核心中,并且必须为每个新版本进行维护释放。

我个人会建议那些依靠APC进行操作码缓存的人使用即将推出的内置操作码缓存来测试其代码,并反馈遇到的任何问题以确保稳定的最终版本。

我不知道这对APC的未来意味着什么。

PHP 5.4+的APC仍然是测试版

这意味着开发人员并不认为它完全稳定。尽管许多人对当前的SVN版本完全没有遇到任何问题,但是仍然有奇怪的报告,指出在某些配置下或负载很重的情况下,人们的边缘情况。

正如你想在生产环境中使用的一切,务必彻底测试任何版本(测试版开发中稳定)或预生产环境第一。这包括负载测试!

从3.1.13版本开始,对SVN信息库的提交速度有所减慢,并且错误列表没有太多新增功能。随您便。

2012年12月10日21:05,拉斯穆斯·勒多夫(Rasmus Lerdorf)写道:

APC现在是5.4,我认为没有比5.3中更多的边缘情况了。两者都不是完美的,但是对于大多数站点而言,它已经足够接近了。

强烈建议任何具有C / gdb技能和空闲时间的人掩盖bug列表,看看他们是否可以解决任何问题,或改进我们大家都依赖的免费开源产品

存在替代解决方案,Wikipedia提供了PHP加速器列表

2013年2月13日,Zeev Suraski宣布Zend Optimizer +源代码的可用性。

关于在下一主要版本(5.5以后的版本)中将Zend Optimizer +集成到PHP内核中,已经进行了很长的讨论。如果是这种情况,人们可能希望提前熟悉Zend Optimizer +。


不要使用APC 3.1.14

由于已发现一些严重的内存问题,但尚未对其进行跟踪,因此已从PECL下载中删除了APC 3.1.14

如果您已经在使用3.1.14,则可能希望降级,直到发布3.1.15。请记住,这仍然是beta。如果完全使用它,则自担风险。

2013-01-02
APC 3.1.14可用除了解决了大量其他错误外,还添加了PHP 5.5兼容性

仍然是beta


2012-09-03
APC 3.1.13可用,修复了许多段错误


2012-08-16
一个APC 3.1.12标签已经被创建,但仍被标记为测试版,其可用APC PECL页,还有的changelog

这次修复了许多与bin_dump相关的错误。


2012-07-19:已创建
一个APC 3.1.11标记,但仍标记为beta,它在APC PECL页面以及changelog中可用。我一直在关注相关的邮件列表,他们仍然在积极地修复APC错误,但是它是一个复杂的模块,似乎没有多少人能够胜任。此版本修复了包含文件时令人讨厌的stat = 0错误。


2012-04-11
一个APC 3.1.10标签今天创建和3.1.10 beta版被放置在上APC PECL页

更新日志状态:

  • 添加PHP 5.4支持(Dmitry,Anatoliy,Pierre)
  • 修复了错误#22679:修复了apc_bin_dump中的常量。使用IS_CONSTANT_TYPE_MASK处理所有常量,包括未量化的常量(而不是〜IS_CONSTANT_INDEX检查)
  • 修复错误#23822,Apache重新启动时PHP崩溃

1
只需键入:“ pecl install apc-3.1.10”,然后我必须重新编译php,这样它将更新libphp5.so
targnation

2012年10月通过ubuntu 12上的Apt-get使用它。干净,稳定!
JustinP

看一下与Zend OpCache和APC相关的文章blogs.oracle.com/opal/entry/using_php_5_5_s和此线程bugs.php.net/bug.php?id=64625
riotera 2013年

10

从PHP 5.4.7和APC 3.1.13(甚至是2012年9月19日起,甚至是APC SVN干线)开始,尽管它是“兼容的”,但在负载较重的服务器上并不稳定,尤其是在使用PHP- FPM和$ GLOBALS。关于APC的一些开发人员讨论都谈到了未解决的附带案例

我被问了六个月后就回答了这个问题,因为问题仍然很普遍,遇到这个线程而没有像我这样的答案是让我迈向使用APC的PHP 5.4并被烧死的原因。希望这可以帮助人们避免一些痛苦。



5

不,APC 1.3.9(目前为止,甚至是svn干线)都与php 5.4.0不兼容,我知道这是因为我花了数小时试图使其工作(测试了各种svn / php)。 ini设置/编译器标志/您命名)。

这简直太荒谬了,APC是最受欢迎的PHP扩展之一,您希望在经历了8个PHP 5.4 RC几个星期之后,他们将有时间让APC与它一起工作。

可悲的。


也许这就是为什么APC不像最初计划的那样包含在PHP 5.4中。当我对其进行测试时,它似乎可以工作,但是,我仅测试了traits,而没有测试任何其他php 5.4功能。
Greywire 2012年

2
似乎唯一可行的php 5.4缓存/字节码编译器是Zend自己的zend服务器软件包。PHP 5.4让我有些激动,但是没有APC或XCache或其他东西,它没有用。这就是PHP多年的故事了。.一直在等待,在等待..我开始认真考虑采用其他语言..只是不确定是什么..
Greywire 2012年

的确,segfault错误是在去年12月报告的,而3个月后仍未得到修复,wtf是发布“重大升级”的要点,如果它甚至在最常见的条件下也不起作用。[错误#60462当启用APC segfault时-提交:2011-12-07] bugs.php.net/bug.php?id=60462&edit=1
JohnSmith

5

好吧,最近几天我一直在尝试,而且没有办法让我的操作码缓存与php 5.4一起使用。Xcache不会编译,并且apc在缓存时将无法识别某些类。我认为这是西蒙在谈论的错误。

我听说后备箱中有一些修复程序,但是我也尝试了最新的后备箱源,但是相同的错误不断出现。我认为没有操作码缓存的php(现在没有可用)不适合生产。HopePC的员工将尽快解决此问题。

更新!!!

Xcache 2.0.0-rc1已经发布并与php 5.4兼容。请享用!



4

我将AMPPS与PHP 5.5.19一起使用。从现在开始,确切地说是从PHP 5.5发布开始-APC被PHP 5.5及更高版本中包含的Zend OPCache取代。现在,启用“ APC”(当前为“ OPcache”)所需要做的就是编辑php.ini。在[XDebug]部分之前,添加以下行:

php.ini

...

[OPcache]

zend_extension=php_opcache.dll

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=24
opcache.max_accelerated_files=4000
opcache.revalidate_freq=3
opcache.fast_shutdown=1

...

请注意,我们需要两个实例

zend_extension =

在[OPcache]中之一,在[XDebug]部分中之一。在您的xampp / ampps / easyPHP服务器安装中,通常默认不提供Xdebug。您可能会遇到需要下载Xdebug扩展程序的情况。您可以使用一个在线应用程序轻松地做到这一点,该应用程序为您的php定义了正确的Xdebug。访问http://xdebug.org/wizard.php并遵循其简单说明。为PHP版本下载正确版本的Xdebug之后,请在[XDebug]部分中编辑zend_extension的链接。

...

[XDebug]
zend_extension = "C:\Program Files (x86)\Ampps\php\ext\php_xdebug-2.2.6-5.5-vc11.dll"
......

请注意!您必须在php.ini文件中的XDebug之前添加OPcache部分!!!如果您正确地跟随我,则您的php.ini文件中应该有两个zend_extension实例(一个在OPcache中,一个在Xdebug部分中)。

这非常适合Symfony2框架,并且消除了为您的PHP和Xdebug安装和启用APC的建议消息。

给那些运行symfony 2并从“ web / config.php”中删除警告消息的人的消息,但是从命令行“ php app / check.php”运行仍然遇到问题。如果发生这种情况,则意味着您的控制台正在使用其他php.ini文件。更改您的系统PATH变量-使其指向正确的php目录(您拥有php.exe文件,并且该文件由本地服务器使用)。

如果您需要更深入的说明,请在下面的评论中告诉我。问候。


1
我强烈建议将此答案的说明与最重要的答案合并,以使每个想​​要实现OpCache的人都知道该怎么做。
2014年

如果您注释掉xdebug“ zend_extension”,则将其关闭-不必要。用[zend_extension]添加[OPcache]部分不会与[XDebug]部分中的相同参数发生冲突。这些部分的顺序也并不重要。
Marek 2014年

注意:[来源:php.net/manual/en/opcache.installation.php]如果要与»Xdebug一起使用OPcache,则必须在Xdebug之前加载OPcache。
DevWL

3

似乎有些问题尚待解决。检查错误,您也许可以找出解决特定问题的方法。

几个小时前,我处理了一个这样的错误,事实证明,从SVN中继使用APC是可行的方法。希望这可以帮助!


到目前为止,它似乎运行良好。这是在Ubuntu 10.04(交钥匙LAMP设备)上,带有来自launchpad.net/~ondrej/+archive/php5的 PHP 5.4软件包。但是,如果出现问题,我将检查错误列表。谢谢!
Greywire 2012年

3

我发现您需要在每个页面请求上清除操作码缓存,否则实现接口的类将无法加载。这是从最新的svn干线Apache 2.4.1,PHP 5.4.0编译而来的。


@ michiel-thalen你很清楚,这就是我正在谈论的问题。真是太可惜了……尽管我仍然看到即使在每次加载时都重置操作码也可以在性能上获得一点好处。用户缓存仍然可以按预期工作(到目前为止,在我的测试中)。
西蒙(Simon)

2

APC-不推荐
我个人没有将APC与PHP 5.4或PHP 5.5一起使用,但是最新的稳定APC与PHP 5.4不兼容,最新的beta APC可以与5.4一起使用,但是它写的仍然对APC产生负面影响。

如果您有PHP 5.5
,请使用Zend Opcache。它是开箱即用的,因此问题最少。

如果您有PHP 5.4
,建议使用XCache。它与PHP 5.4和5.5完全兼容。积极发展。最新的稳定版本于3.5个月前(2013年10月10日)发布。即使您使用fastcgi,它也可以提高性能。


1

Zend OPCache包含在PHP 5.5中,名称为php / ext目录中的php_opcache.dll 为了激活它:

  • php_opcahe.dll文件作为zend扩展名添加到php.ini中配置文件中。
  • 使用格式zend_extension = path / to / php / ext / php_opcache.dll
  • zend_extension放在php.ini配置中xDebug zend_extension之前
  • 保存您的php.ini配置文件并重新启动服务器。

0

APC有一个新版本:自1月2日以来为3.1.14,它解决了一些错误: http //pecl.php.net/package/APC

但是,到目前为止,我一直在dotdeb存储库中运行带有APC 3.1.13的PHP 5.4.x,没有任何问题,所以对我来说,它是稳定的。dotdeb还告知我,他们将在PHP的下一个版本(预计为5.4.11)中包括更新的APC。


如果您使用的是APC 3.1.14,建议您暂时恢复为APC 3.1.13。发现了一些与内存相关的严重错误,这些错误导致从下载部分中删除了3.1.14版本。
Leigh

确实,我发现dotdeb为PHP 5.4.11发布的软件包最初包括APC 3.1.14,但是为了避免该错误,已经对其进行了还原。
史蒂文·德格罗特

0

我们正在尝试使用PHP 5.4.26和APC 3.1.9进行无内存错误(Apache segfault)。在PHP 5.4.X上有一个针对APC的开放错误:https ://bugs.php.net/bug.php ? id = 61934

我建议不要在PHP> 5.3上使用此插件。


0

在XAMPP版本5.6.3(PHP 5.6.3)中,您在ini.php中要做的就是:

[OPcache]

zend_extension = php_opcache.dll
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=24
opcache.max_accelerated_files=4000
opcache.revalidate_freq=3
opcache.fast_shutdown=1

[XDebug]

zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.max_nesting_level = 200
xdebug.profiler_append = 1
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
;xdebug.profiler_output_dir = "C:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
;xdebug.remote_enable = 0
;xdebug.remote_handler = "dbgp"
;xdebug.remote_host = "127.0.0.1"
;xdebug.trace_output_dir = "C:\xampp\tmp"

symfony2框架的配置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.