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 엔 라이트

예, 실제로 작동했습니다. 감사합니다. 그리고 APC는 특히 새로운 특성 기능을 사용할 때 5.4에서 잘 작동합니다.
Greywire

1
@Darragh [그냥 알려주세요] 이것에 대해 엄청난 현상금이 있습니다. 대답을하고 싶을 수도 있습니다.
Tiberiu-Ionuț Stan

1
전혀 그렇지 않다. 그것의 마지막 릴리스는 2012 년이었고, 그 기분이 언짢아 PHP의 최신 버전과 호환되지 않습니다
Abadis

답변:


163

PHP 5.5에 포함 된 Zend OPCache

2013 년 3 월 21 일, "Zend OPCache"를 포함한 PHP 5.5 베타 1이 출시되었습니다. 이것은 PHP 코어에 포함되어 있기 때문에 앞으로 APC를 대체 할 것 같으며 각각의 새로운 버전에 대해 유지 되어야 합니다. 해제.

나는 개인적으로 APC에 의존하는 사람들에게 opcode 캐싱을 통해 곧 출시 될 내장 opcode 캐시로 코드를 테스트하고 안정적인 최종 릴리스를 보장하기 위해 발생한 모든 문제를 피드백하도록 조언 할 것입니다.

이것이 APC의 미래에 어떤 의미인지 모르겠습니다.

PHP 5.4+ 용 APC는 여전히 베타로 표시됩니다.

이것은 개발자가 완전히 안정적 이라고 생각 하지 않는다는 것을 의미합니다 . 많은 사람들이 현재 SVN 릴리스에서 전혀 문제를 경험하지 않지만 특정 구성 또는 과부하 상태에서 사람들의 엣지 케이스에 대한 이상한보고가 여전히 있습니다.

프로덕션 환경에서 사용하려는 모든 것과 마찬가지로 먼저 개발 또는 사전 프로덕션 환경에서 모든 릴리스 (베타 또는 안정) 를 철저히 테스트해야합니다 . 여기에는 부하 테스트가 포함됩니다!

3.1.13 릴리스부터 SVN 저장소에 대한 커밋이 다소 느려지고 버그 목록에 최근 추가 된 항목 이 많지 않습니다. 당신이 할 것을 만드십시오.

2012 년 12 월 10 일 21:05에 Rasmus Lerdorf는 다음과 같이 썼습니다.

APC는 이제 5.4에서 우리가 5.3에서보다 더 많은 엣지 케이스가 없다고 생각하는 시점에 있습니다. 둘 다 완벽하지는 않지만 대부분의 사이트에 충분히 가깝습니다.

C / gdb 기술과 자유 시간을 가진 사람은 누구나 버그 목록 을 훑어 보고 그들이 무엇이든 고칠 수 있는지 확인하거나 우리 모두가 의존하는 이 무료 오픈 소스 제품 을 개선 해야합니다.

대체 솔루션이 존재하며 Wikipedia는 PHP 가속기 목록을 제공합니다 .

2013 년 2 월 13 일 Zeev Suraski는 Zend 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 페이지
변경 로그 상태 :

  • 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

우분투 12에서 Apt-get을 통해 2012 년 10 월 사인을 사용했습니다. 깨끗하고 안정적입니다!
JustinP 2012 년

젠드 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로 도약하고 불에 타게되었습니다. 바라건대 이것은 사람들이 약간의 고통을 피하는 데 도움이 될 것입니다.



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에 포함되지 않은 이유 일 것입니다 .. 테스트했을 때 작동하는 것처럼 보였지만, 다른 php 5.4 기능이 아닌 특성 만 테스트했습니다.
Greywire

2
php 5.4에 대한 유일한 실행 가능한 캐시 / 바이트 코드 컴파일러는 Zend의 자체 zend 서버 패키지 인 것 같습니다. PHP 5.4는 저를 흥분 시켰지만 APC 나 XCache 같은 것이 없어서 쓸모가 없었습니다. 그리고 이것은 .. 항상 내가 다른 언어를 차지 생각 진지하게 시작 했어 .. 기다리고, 기다리고 .. 년 년 동안 PHP의 이야기를하고있다 그냥 확인 어떤 ..
Greywire

사실, segfault 버그는 작년 12 월에보고되었으며 3 개월 후에도 여전히 수정되지 않았습니다. wtf는 가장 일반적인 조건에서도 작동하지 않는 경우 '주요 업그레이드'를 릴리스하는 지점입니다. [버그 # 60462 APC가 활성화 된 경우 segfault-제출 날짜
JohnSmith

5

글쎄, 나는 지난 며칠 동안 노력하고 있으며, opcode cacher를 PHP 5.4와 함께 사용할 수있는 방법이 없습니다. Xcache는 컴파일되지 않으며 apc는 캐시 될 때 특정 클래스를 인식하지 못합니다. 나는 이것이 사이먼이 말하는 오류라고 생각합니다.

트렁크에 몇 가지 수정 사항이 있다고 들었지만 최신 트렁크 소스도 시도했지만 동일한 오류가 계속 발생합니다. 나는 opcode cacher가없는 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

...

다음 두 가지 인스턴스 가 필요합니다 .

zend_extension =

하나는 [OPcache]에 있고 다른 하나는 [XDebug] 섹션에 있습니다. 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 파일에 두 개의 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를 구현하려는 모든 사람이 정확히 수행하는 방법을 알도록 강력히 촉구합니다.

xdebug "zend_extension"을 주석 처리하면 스위치가 꺼집니다. 필요하지 않습니다. "zend_extension"으로 [OPcache] 섹션을 추가해도 [XDebug] 섹션의 동일한 매개 변수와 충돌하지 않습니다. 또한 해당 섹션의 순서는 중요하지 않습니다.
Marek

참고 : [출처 : php.net/manual/en/opcache.installation.php]»Xdebug 와 함께 OPcache를 사용하려면 Xdebug보다 먼저 OPcache를로드해야합니다.
DevWL 2015 년

3

아직 해결되지 않은 몇 가지 문제가있는 것 같습니다. 버그를 확인하면 특정 문제에 대한 해결책이 무엇인지 파악할 수 있습니다.

나는 몇 시간 전에 그러한 오류를 처리했고 SVN 트렁크에서 APC를 사용하는 것이 방법이라는 것이 밝혀졌습니다. 도움이 되었기를 바랍니다!


지금까지는 잘 작동하는 것 같습니다. 이것은 launchpad.net/~ondrej/+archive/php5의 PHP 5.4 패키지가있는 Ubuntu 10.04 (턴키 LAMP 어플라이언스)에 있습니다. 하지만 뭔가 나오면 버그 목록을 확인하겠습니다. 감사!
Greywire

3

각 페이지 요청에서 opcode 캐시를 지워야합니다. 그렇지 않으면 인터페이스를 구현하는 클래스가로드되지 않습니다. 이것은 최신 svn 트렁크 인 Apache 2.4.1, PHP 5.4.0에서 컴파일되었습니다.


@ michiel-thalen 당신이 자리 잡고 있습니다. 그게 제가 말한 문제입니다. 정말 부끄러운 일입니다 ... 비록 각로드에서 opcode를 재설정하더라도 여전히 성능면에서 약간의 이점을 보았습니다. 사용자 캐시는 여전히 의도 한대로 작동합니다 (지금까지 테스트에서).
사이먼

2

APC-권장하지 않음
개인적으로 PHP 5.4 또는 PHP 5.5에서 APC를 사용하지 않았지만 최신 안정 APC는 PHP 5.4와 호환되지 않으며 최신 베타 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

젠드 OPCache는 이름에서 PHP 5.5에 포함되어 php_opcache.dll 에서 PHP / 내선 디렉토리. 활성화하려면 :

  • 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 저장소에서 APC 3.1.13으로 PHP 5.4.x를 실행 해 왔기 때문에 안정적이라고 말할 수 있습니다. dotdeb는 또한 5.4.11이 될 것으로 예상되는 다음 PHP 릴리스에 업데이트 된 APC를 포함 할 것이라고 알려 왔습니다.


APC 3.1.14를 사용하는 경우 일시적으로 APC 3.1.13으로 되 돌리는 것이 좋습니다. 일부 심각한 메모리 관련 버그가 발견되어 3.1.14 릴리스를 다운로드 섹션에서 가져 왔습니다.
Leigh

사실, PHP 5.4.11 용 dotdeb에서 출시 한 패키지에 처음에는 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 프레임 워크에 대한 구성.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.