APCはPHP 5.4またはPHP 5.5と互換性がありますか?


103

APCがphp 5.4リリースと一致するように更新されたようではありません(当初計画されていたように、PHPコアにAPCが含まれていたと思います)。

現在の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年

回答:


163

PHP 5.5に含まれるZend OPCache

2013年3月21日、「Zend OPCache」を含むPHP 5.5ベータ1がリリースされました。これは、PHPコアに含まれているため、今後APCの代わりになるようであり、新しいコアごと維持する必要があります。リリース。

オペコードキャッシングをAPCに依存している人には個人的に、今後の組み込みのオペコードキャッシュでコードをテストし、発生した問題をフィードバックして安定した最終リリースを確保するようにアドバイスします。

これがAPCの将来にとって何を意味するのかはわかりません。

PHP 5.4以降のAPCはまだベータ版として問題があります

これは、開発者が完全に安定していると考えていないことを意味ます。現在のSVNリリースでは多くの人がまったく問題を経験していませんが、特定の構成または高負荷の人からのエッジケースの奇妙なレポートがまだあります。

運用環境で使用するすべてのものと同様に、開発環境または運用前環境でリリース(ベータ版または安定版)を最初に徹底的にテストしてください。これには負荷テストも含まれます。

3.1.13リリースの時点で、SVNリポジトリへのコミットが多少遅くなり、バグリストに最近の多くの追加がありません。あなたがそうするものを作りなさい。

2012年12月10日21:05、ラスムスラードルフは次のように書いています。

APCは5.4の時点であり、5.3の場合よりも多くのエッジケースはないと思います。どちらも完璧ではありませんが、ほとんどのサイトにとって十分に近いです。

C / gdbのスキルがあり、ある程度の自由時間がある人は、バグリストを調べて何か修正できるかどうか、または私たち全員が信頼しているこの無料のオープンソース製品を改善できるかどうかを確認するように求められます。

代替ソリューションが存在し、ウィキペディアはPHPアクセラレータのリストを提供しています

2013年2月13日、Zeev SuraskiZend Optimizer +ソースコードの提供を発表しました。

次のメジャーバージョン(5.5以降のバージョン)では、Zend Optimizer +をPHPコア統合することについてかなり長い議論がありました。その場合は、事前にZend Optimizer +に慣れることをお勧めします。


APC 3.1.14は使用しないでください

APC 3.1.14は、発見されたがまだ追跡されていないいくつかの深刻なメモリ問題のためにPECLダウンロードから削除されました。

すでに3.1.14を使用している場合は、3.1.15がリリースされるまでダウングレードすることをお勧めします。これはまだベータ版です。使用している場合は、自己責任で使用してください。

2013-01-02
APC 3.1.14が利用可能になりPHP 5.5との互換性が追加されるだけでなく、他の多数のバグも解決されます。

まだベータ版


2012-09-03
APC 3.1.13が利用可能になり、多数のセグメンテーション違反が修正されました


2012年8月16日
アンAPCは3.1.12タグが作成されましたが、それでもとしてマークされているベータ版でその利用可能、APC PECLページだけでなく、更新履歴

今回、bin_dump関連の多くのバグが修正されました。


2012-07-19
アンAPCは3.1.11タグが作成されましたが、それでもとしてマークされているベータ版でその利用可能、APC PECLページだけでなく、更新履歴。私は関連するメーリングリストをフォローしてきましたが、彼らはまだAPCバグの修正に積極的に取り組んでいますが、それは複雑なモジュールであり、多くの人がその仕事をしているようには見えません。このリリースでは、ファイルを含める場合の厄介なstat = 0のバグが修正されています。


2012-04-11
アンAPC 3.1.10タグが今日作成された、および3.1.10のベータリリースが上に置かれたAPC PECLページ
のchangelog状態:

  • 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 2012年

ZendのOpCacheとAPCに関連し、この記事を見てとるblogs.oracle.com/opal/entry/using_php_5_5_sとこのスレッドbugs.php.net/bug.php?id=64625
riotera

10

PHP 5.4.7およびAPC 3.1.13(および2012-09-19現在のAPC SVNトランク)では、 "互換性"はありますが、特にPHPを使用している場合、負荷の高いサーバーでは安定しません。 FPMと$ GLOBALS。APCに関する開発者の議論のいくつかは、未解決のフリンジケースについて話します。

問題がまだ蔓延しているため、質問されてから6か月後にこの質問に答えています。私のスレッドのような答えがないスレッドに出会ったことが、APCを使ってPHP 5.4への飛躍を遂げた理由です。うまくいけば、これは人々がいくつかの痛みを避けるのに役立つでしょう。


6

トランクの最新リビジョンでは、バグが「可能性があります」と修正されているようです。PHP 5.4.0で動作するようになりました。

svn co http://svn.php.net/repository/pecl/apc/trunk/ apc-trunk

cd apc-trunk

phpize

。/構成、設定

作る

インストールする


apcはsvn.php.net/repository/peclにありません。リポジトリはGitに変換され、git.php.net

5

いいえ、APC 1.3.9(および現時点ではsvnトランクも)はphp 5.4.0と互換性がありません。動作させるために何時間も費やしたためです(さまざまなsvn / phpをテストしました)。 ini設定/コンパイラフラグ/名前を付けます)。

これはとんでもないことです。APCは最も人気のあるPHP拡張機能の1つであり、8週間のPHP 5.4 RCを数週間経った後、APCを動作させる時間があると予想します。

哀れ。


たぶんこれが、APCが当初計画されたようにPHP 5.4に含まれていなかった理由かもしれません。私がテストしたところ、APCは機能するように見えましたが、特性のみをテストし、他のphp 5.4機能はテストしていません。
Greywire

2
PHP 5.4で実行可能な唯一のキャッシュ/バイトコードコンパイラは、Zend独自のzendサーバーパッケージであるようです。PHP 5.4には興奮しましたが、APCやXCacheなどがなければ役に立たないのです。そして、これは何年にもわたってPHPの話でした..常に待っている、待っている..私は他の言語を取り上げることを真剣に考え始めています...何が何かわからない..
Greywire

確かに、segfaultバグは昨年12月に報告されましたが、3か月後もまだ修正されていません。最も一般的な条件下でさえ機能しない場合、wtfは「メジャーアップグレード」をリリースするポイントです。[Bug#60462 APCが有効な場合segfault-提出日:2011-12-07] bugs.php.net/bug.php?id=60462&edit=1
JohnSmith

5

さて、ここ数日試してみましたが、opcode cacherをphp 5.4で動作させる方法はありません。Xcacheはコンパイルされず、apcはキャッシュされたときに特定のクラスを認識しません。これはサイモンが話しているエラーだと思います。

トランクにいくつかの修正があると聞きましたが、最新のトランクソースも試しましたが、同じエラーが繰り返し発生します。オペコードキャッシャーなしのphp(現在利用可能なものはありません)は、本番に値しないと思います。apcの人々がこの問題をできるだけ早く修正することを願っています。

更新!!!

Xcache 2.0.0-rc1がリリースされ、php 5.4と互換性があります。楽しい!



4

PHPバージョン5.5.19でAMPPSを使用しています。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

...

次の2つのインスタンスが必要であることに注意してください。

zend_extension =

[OPcache]と[XDebug]セクションに1つずつ。Xdebugは多くの場合、xampp / ampps / easyPHPサーバーインストールのデフォルトとして提供されていません。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ファイルに2つのzend_extensionのインスタンスがあるはずです(1つはOPcacheにあり、もう1つはXdebugセクションにあります)。

これはSymfony2フレームワークに対して完全に機能し、PHPとXdebugにAPCをインストールして有効にするための推奨メッセージを排除します。

symfony 2を実行し、 "web / config.php"から警告メッセージを削除したものの、コマンドライン "php app / check.php"から実行すると問題が発生する人へのメッセージ。これが発生した場合は、コンソールが別のphp.iniファイルを使用していることを意味します。システムのPATH変数を変更します-正しいphpディレクトリ(php.exeファイルがあり、ローカルサーバーで使用されている場所)を指すようにします。

詳細な説明が必要な場合は、下のコメントでお知らせください。よろしく。


1
この回答の指示を上位の回答とマージすることを強くお勧めします。これにより、OpCacheを実装するすべての人が、その方法を正確に理解できるようになります。
Joe

xdebug "zend_extension"をコメントアウトすると、スイッチがオフになります-必要ありません。「zend_extension」を使用して[OPcache]セクションを追加しても、[XDebug]セクションの同じパラメーターと競合しません。また、これらのセクションの順序は重要ではありません。
Marek

注:[ソース:php.net/manual/en/opcache.installation.php] OPcacheを»Xdebugで使用する場合は、Xdebugの前にOPcacheをロードする必要があります。
DevWL

3

まだ解決されていない問題がいくつかあるようです。バグを確認すると、特定の問題の解決策を理解できる場合があります。

数時間前にそのようなエラーに対処しましたが、SVNトランクからAPCを使用する方法が適切であることがわかりました。お役に立てれば!


これまでのところ、問題なく動作しているようです。これはからPHP 5.4パッケージでのUbuntu 10.04(ターンキーLAMPアプライアンス)であるlaunchpad.net/~ondrej/+archive/php5。しかし、何か問題が発生した場合は、バグリストを確認します。ありがとう!
Greywire 2012年

3

各ページリクエストでオペコードキャッシュをクリアする必要があることを確認しました。そうしないと、インターフェースを実装するクラスのロードに失敗します。これは最新のsvnトランク、Apache 2.4.1、PHP 5.4.0からコンパイルされました。


@ michiel-thalenあなたがスポットしている、それが私が話していた問題です。それは本当に残念です...私はまだ各ロードでオペコードをリセットしてもパフォーマンスにわずかな利点を見てきましたが ユーザーキャッシュはまだ意図したとおりに機能します(これまでのテストでは)。
Simon、

2

APC-非推奨
個人的には、PHP 5.4またはPHP 5.5でAPCを使用しませんでしたが、最新の安定したAPCはPHP 5.4と互換性がありません。

PHP 5.5
を使用している場合は、Zend Opcacheを使用してください。そのまま使用できるため、問題は最小限です。

PHP 5.4
をお使いの場合は、XCacheをお勧めします。PHP 5.4および5.5と完全に互換性があります。積極的に開発。最後の安定版は3.5か月前(2013年10月10日)にリリースされました。fastcgiを使用してもパフォーマンスが向上します。


1

Zend OPCacheは、php / extディレクトリのphp_opcache.dllという名前でPHP 5.5に含まれています それをアクティブにするために:

  • php.ini構成ファイルにzend拡張機能としてphp_opcahe.dllファイルを追加します。
  • 形式zend_extension = path / to / php / ext / php_opcache.dllを使用します。
  • php.ini設定で、xDebug zend_extensionの前にzend_extensionを配置します。
  • php.ini設定ファイルを保存して、サーバーを再起動します。

0

APCの新しいバージョン:1月2日以降の3.1.14は、いくつかのバグを解決しています:http ://pecl.php.net/package/APC

ただし、私はこれまで問題なくdotdebリポジトリからPHP 5.4.xとAPC 3.1.13を実行しており、安定していると言えます。dotdebはまた、アップデートされたAPCがPHPの次のリリースに含まれることを知らせてくれました。


APC 3.1.14を使用している場合は、一時的にAPC 3.1.13に戻すことをお勧めします。深刻なメモリ関連のバグがいくつか発見され、その結果、3.1.14リリースがダウンロードセクションから削除されました。
リー

実際、dotdebがPHP 5.4.11向けにリリースしたパッケージには当初APC 3.1.14が含まれていましたが、バグを回避するために元に戻されました。
Steven De Groote、2013

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フレームワークの設定。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.