APC có tương thích với PHP 5.4 hoặc PHP 5.5 không?


103

Có vẻ như APC không được cập nhật trùng với bản phát hành php 5.4 (tôi ước họ sẽ đưa APC vào lõi PHP như kế hoạch ban đầu).

Tôi dường như không thể tìm thấy bất kỳ câu trả lời chắc chắn nào về việc liệu APC hiện tại có hoạt động với php 5.4+ hay không. Tôi đã quản lý để tìm các gói Ubuntu cho php 5.4, nhưng các gói php-apc sẽ không cài đặt.


2
Tôi hiểu rằng bạn đang thực hiện cài đặt apt-get. Bạn đã thử cài đặt pecl chưa?
Darragh Enright

Vâng, điều này thực sự đã hoạt động. Cảm ơn bạn. Và hóa ra, APC hoạt động tốt với 5.4, đặc biệt, khi sử dụng chức năng đặc điểm mới.
Greywire

1
@Darragh [Chỉ cho bạn biết] có một khoản tiền thưởng khổng lồ về điều này, bạn có thể muốn đưa ra câu trả lời.
Tiberiu-Ionuţ Stan

1
Không có nó không phải là. Phát hành cuối cùng của nó là ở năm 2012 và đó là cáu kỉnh không tương thích với phiên bản mới hơn của PHP
Abadis

Câu trả lời:


163

Zend OPCache có trong PHP 5.5

Vào ngày 21 tháng 3 năm 2013, PHP 5.5 beta 1 đã được phát hành bao gồm "Zend OPCache" - Có vẻ như đây sẽ là sự thay thế cho APC trong tương lai vì nó được bao gồm trong lõi PHP và sẽ phải được duy trì cho mỗi phiên bản mới giải phóng.

Cá nhân tôi sẽ khuyên những người phụ thuộc vào APC cho bộ nhớ đệm opcode của nó để kiểm tra mã của họ với bộ đệm opcode tích hợp sắp tới và cung cấp lại bất kỳ sự cố nào gặp phải để đảm bảo bản phát hành cuối cùng ổn định.

Tôi không biết điều này có ý nghĩa gì đối với tương lai của APC.

APC CHO PHP 5.4+ VẪN ĐƯỢC CẬP NHẬT LÀ BETA

Điều này có nghĩa là các nhà phát triển không coi nó là hoàn toàn ổn định . Trong khi nhiều người không gặp phải vấn đề gì với các bản phát hành SVN hiện tại, vẫn có báo cáo kỳ lạ về các trường hợp cạnh từ những người ở các cấu hình nhất định hoặc chịu tải nặng.

Như với tất cả mọi thứ bạn muốn sử dụng trong một môi trường sản xuất, chắc chắn rằng bạn kiểm tra kỹ lưỡng bất kỳ phát hành (beta hoặc ổn định) trong phát triển hoặc các môi trường sản xuất trước đầu tiên . Điều này bao gồm thử nghiệm tải!

Kể từ bản phát hành 3.1.13, các cam kết đối với kho lưu trữ SVN đã chậm lại phần nào và danh sách lỗi không có nhiều bổ sung gần đây. Làm của những gì bạn sẽ làm.

Vào ngày 10 tháng 12 năm 2012, 21:05, Rasmus Lerdorf đã viết:

Hiện tại APC đang ở mức 5,4, nơi tôi không nghĩ có nhiều trường hợp lợi hại hơn chúng ta có trong 5,3. Không phải là hoàn hảo, nhưng nó đủ gần với phần lớn các trang web.

Bất kỳ ai có kỹ năng C / gdb và có chút thời gian rảnh rỗi đều được khuyến khích xem lại danh sách lỗi và xem liệu họ có thể sửa được gì không, hoặc cải thiện sản phẩm mã nguồn mở miễn phí mà tất cả chúng ta đều dựa vào.

Các giải pháp thay thế tồn tại, Wikipedia cung cấp danh sách các trình tăng tốc PHP .

Vào ngày 13 tháng 2 năm 2013, Zeev Suraski đã thông báo về sự sẵn có của mã nguồn Zend Optimizer + .

Đã có một cuộc thảo luận khá dài về việc tích hợp Zend Optimizer + vào lõi PHP trong phiên bản chính tiếp theo (phiên bản sau 5.5). Mọi người có thể muốn tự làm quen với Zend Optimizer + trước, nếu đúng như vậy.


Không sử dụng APC 3.1.14

APC 3.1.14 đã bị xóa khỏi bản tải xuống PECL do một số sự cố bộ nhớ nghiêm trọng đã được phát hiện nhưng vẫn chưa được theo dõi.

Nếu bạn đang sử dụng 3.1.14, bạn có thể muốn hạ cấp cho đến khi 3.1.15 được phát hành. Hãy nhớ rằng, đây vẫn là phiên bản beta . Nếu bạn đang sử dụng nó, bạn đang sử dụng nó với rủi ro của riêng bạn.

2013-01-02 : Có sẵn
APC 3.1.14 , bổ sung khả năng tương thích với PHP 5.5, ngoài việc giải quyết một số lỗi khác .

Vẫn là bản beta


2012-09-03 : Có sẵn
APC 3.1.13 , sửa một số giá trị mặc định .


2012/08/16 :
Một APC 3.1.12 thẻ đã được tạo ra, nhưng vẫn đánh dấu là beta , sẵn có của mình trên trang APC PECL , cũng như changelog .

Đã sửa rất nhiều lỗi liên quan đến bin_dump trong thời gian này.


2012/07/19 :
Một APC 3.1.11 thẻ đã được tạo ra, nhưng vẫn đánh dấu là beta , sẵn có của mình trên trang APC PECL , cũng như changelog . Tôi đã theo dõi các danh sách gửi thư có liên quan và họ vẫn đang tích cực làm việc để sửa lỗi APC tuy nhiên đây là một mô-đun phức tạp và dường như không có nhiều người thực hiện được nhiệm vụ. Bản phát hành này sửa lỗi stat = 0 khó chịu khi bao gồm tệp.


2012-04-11 :
Một APC 3.1.10 thẻ được tạo ra ngày hôm nay, và một phiên bản beta của 3.1.10 đã được đặt trên trang APC PECL

Các changelog trạng thái:

  • Thêm hỗ trợ PHP 5.4 (Dmitry, Anatoliy, Pierre)
  • Đã sửa lỗi # 22679: Sửa lỗi apc_bin_dump cho các hằng số. Sử dụng IS_CONSTANT_TYPE_MASK để xử lý tất cả các hằng số, kể cả những hằng số không đủ tiêu chuẩn (thay vì kiểm tra ~ IS_CONSTANT_INDEX)
  • Đã sửa lỗi # 23822, php gặp sự cố khi khởi động lại apache

1
chỉ cần gõ: "pecl install apc-3.1.10" và sau đó tôi phải biên dịch lại php để nó sẽ cập nhật libphp5.so
targnation

Đã sử dụng nó sine tháng 10 năm 2012 thông qua Apt-get trên ubuntu 12. Sạch sẽ và ổn định!
JustinP 16/10/12

hãy xem bài viết này liên quan đến Zend OpCache và APC blogs.oracle.com/opal/entry/using_php_5_5_s và điều này chủ đề bugs.php.net/bug.php?id=64625
riotera

10

Kể từ PHP 5.4.7 và APC 3.1.13 (và thậm chí cả thân APC SVN kể từ 2012-09-19), mặc dù nó "tương thích" nhưng nó không ổn định trên các máy chủ có tải nặng, đặc biệt nếu bạn đang sử dụng PHP- FPM và $ GLOBALS. Một số cuộc thảo luận của nhà phát triển trên APC nói về các trường hợp rìa chưa được giải quyết .

Tôi đang trả lời câu hỏi này 6 tháng sau khi nó được hỏi vì vấn đề vẫn còn phổ biến và gặp phải chủ đề này với một câu trả lời giống như của tôi là điều khiến tôi thực hiện bước nhảy vọt lên PHP 5.4 w / APC và bị cháy. Mong rằng điều này sẽ giúp mọi người tránh được phần nào đau đớn.


6

Có vẻ như lỗi "có thể" đã được sửa trong bản sửa đổi mới nhất cho thân cây. Bây giờ tôi đã có nó hoạt động với PHP 5.4.0.

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

cd apc-trunk

phpize

./configure

làm

thực hiện cài đặt


apc không còn trong svn.php.net/repository/pecl nữa. Repo đã được chuyển đổi sang Git và bây giờ có thể được duyệt tại git.php.net/?p=pecl/caching/apc.git
Dereckson

5

Không, APC 1.3.9 (và tính đến thời điểm này, ngay cả thân cây svn) không tương thích với php 5.4.0, tôi biết vì tôi vừa mất hàng giờ cố gắng để nó hoạt động (đã thử nghiệm nhiều svn / php khác nhau. ini settings / compiler flags / bạn đặt tên cho nó).

Điều này thật nực cười, APC là một trong những phần mở rộng PHP phổ biến nhất và bạn sẽ mong đợi sau nhiều tuần trải qua 8 phiên bản PHP 5.4 RC, họ sẽ có thời gian để APC hoạt động cùng với nó.

Thật đáng thương.


Có thể đây là lý do tại sao APC không được bao gồm trong PHP 5.4 như kế hoạch ban đầu .. Nó có vẻ hoạt động khi tôi thử nghiệm nó, nhưng, tôi chỉ thử nghiệm các đặc điểm chứ không phải bất kỳ tính năng nào khác của php 5.4.
Greywire

2
Có vẻ như trình biên dịch cache / bytecode khả thi duy nhất cho php 5.4 là gói máy chủ zend riêng của Zend. PHP 5.4 khiến tôi rất phấn khích nhưng nếu không có APC hoặc XCache hoặc thứ gì đó, nó vô dụng. Và điều này đã trở thành câu chuyện của PHP trong nhiều năm và năm .. luôn luôn chờ đợi, chờ đợi .. Tôi bắt đầu nghiêm túc nghĩ về chiếm một số ngôn ngữ khác .. chỉ không chắc chắn những gì ..
Greywire

Đúng như vậy, lỗi segfault đã được báo cáo trở lại vào tháng 12 năm ngoái và 3 tháng sau nó vẫn chưa được sửa, wtf là điểm phát hành 'bản nâng cấp lớn' nếu nó thậm chí không hoạt động trong các điều kiện phổ biến nhất. [Bug # 60.462 Khi APC được kích hoạt segfault - Đăng ngày: 2011/12/07] bugs.php.net/bug.php?id=60462&edit=1
JohnSmith

5

Vâng, tôi đang cố gắng trong vài ngày qua và không có cách nào tôi có thể nhận được bộ lưu mã opcode để hoạt động với php 5.4. Xcache sẽ không biên dịch và apc sẽ không nhận ra một số lớp nhất định khi được lưu vào bộ nhớ cache. Tôi nghĩ đây là lỗi mà Simon đang nói đến.

Tôi nghe nói có một số sửa chữa trong thân cây, nhưng tôi cũng đã thử các nguồn thân cây mới nhất, nhưng các lỗi tương tự vẫn tiếp tục quay trở lại. Tôi nghĩ rằng php mà không có bộ lưu mã opcode (không có sẵn ngay bây giờ) không xứng đáng được sản xuất. Hy vọng mọi người tại apc sẽ sửa lỗi này càng sớm càng tốt.

CẬP NHẬT !!!

Xcache 2.0.0-rc1 đã ra mắt và tương thích với php 5.4. Thưởng thức!



4

Tôi đang sử dụng AMPPS với Phiên bản PHP 5.5.19. Vì bây giờ chính xác là từ khi phát hành PHP 5.5 - APC được thay thế bằng Zend OPCache được bao gồm trong PHP 5.5 trở lên. Bây giờ tất cả những gì bạn phải làm để kích hoạt "APC" (hiện tại là "OPcache") là chỉnh sửa php.ini của bạn. Trước phần [XDebug], hãy thêm các dòng chảy:

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

...

Xin lưu ý rằng chúng ta cần có hai trường hợp :

zend_extension =

Một trong [OPcache] và một trong [XDebug]. Xdebug thường không được cung cấp làm mặc định trong cài đặt máy chủ xampp / ampps / easyPHP của bạn. Bạn có thể gặp phải tình huống cần tải xuống tiện ích mở rộng Xdebug. Bạn có thể làm điều này dễ dàng bằng cách sử dụng một ứng dụng trực tuyến xác định Xdebug phù hợp cho php của bạn. Truy cập http://xdebug.org/wizard.php và làm theo hướng dẫn đơn giản của họ. Sau khi bạn đã tải xuống đúng phiên bản Xdebug cho phiên bản php của mình - hãy chỉnh sửa liên kết của zend_extension trong phần [XDebug].

...

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

Xin lưu ý! rằng bạn phải thêm phần OPcache trước XDebug trong tệp php.ini của bạn !!! Nếu bạn làm theo tôi một cách chính xác, bạn sẽ có hai phiên bản zend_extension trong tệp php.ini của mình (một trong OPcache và một trong phần Xdebug).

Điều này hoạt động hoàn hảo cho khuôn khổ Symfony2 và loại bỏ thông báo đề xuất cài đặt và kích hoạt APC cho PHP và Xdebug của bạn.

Thông báo cho những người chạy symfony 2 và đã xóa thông báo cảnh báo khỏi "web / config.php", nhưng vẫn gặp sự cố do chạy từ dòng lệnh "php app / check.php". Nếu điều này xảy ra, điều đó có nghĩa là bảng điều khiển của bạn đang sử dụng tệp php.ini khác. Thay đổi biến thể PATH hệ thống của bạn - làm cho nó trỏ đến thư mục php bên phải (nơi bạn có tệp php.exe và được sử dụng bởi máy chủ cục bộ của bạn).

Nếu bạn cần giải thích sâu hơn, hãy cho tôi biết trong bình luận bên dưới. Trân trọng.


1
Tôi thực sự mong muốn các hướng dẫn của câu trả lời này được hợp nhất với câu trả lời trên cùng, để mọi người muốn triển khai OpCache biết chính xác cách thực hiện.
Joe

Nếu bạn nhận xét xdebug "zend_extension", bạn sẽ tắt nó đi - không cần thiết. Việc thêm phần [OPcache] với "zend_extension" không mâu thuẫn với cùng một tham số từ phần [XDebug]. Ngoài ra thứ tự của những phần đó không thực sự quan trọng.
Marek

Lưu ý: [source: php.net/manual/en/opcache.installation.php] Nếu bạn muốn sử dụng OPcache với »Xdebug, bạn phải tải OPcache trước Xdebug.
DevWL

3

Có vẻ như vẫn còn một số vấn đề chưa được giải quyết. Kiểm tra các lỗi và bạn có thể tìm ra giải pháp cho vấn đề cụ thể của mình.

Tôi đã xử lý một lỗi như vậy vài giờ trước, và hóa ra là sử dụng APC từ thân cây SVN là cách để đi. Hi vọng điêu nay co ich!


Cho đến nay, nó dường như đang hoạt động tốt. Đây là trên Ubuntu 10.04 (thiết bị LAMP chìa khóa trao tay) với các gói PHP 5.4 từ khởi chạypad.net/~ondrej/+archive/php5 . Nhưng nếu có gì đó xuất hiện, tôi sẽ kiểm tra danh sách lỗi. cảm ơn!
Greywire

3

Tôi nhận thấy rằng bạn cần xóa bộ nhớ cache opcode trên mỗi yêu cầu trang nếu không các lớp triển khai giao diện không tải được. Điều này được biên dịch từ thân cây svn mới nhất, Apache 2.4.1, PHP 5.4.0.


@ michiel-thalen bạn đang chú ý, đó là vấn đề tôi đang nói đến. Thật đáng tiếc ... Mặc dù tôi vẫn thấy một chút lợi ích về hiệu suất ngay cả khi đặt lại mã opcode trên mỗi lần tải. Bộ nhớ cache của người dùng vẫn hoạt động như dự định (trong thử nghiệm của tôi cho đến nay).
Simon

2

APC - không được khuyến nghị
Cá nhân tôi không sử dụng APC với PHP 5.4 hoặc PHP 5.5, nhưng APC ổn định mới nhất không tương thích với PHP 5.4, APC beta mới nhất có thể được sử dụng với 5.4 nhưng nó được viết rằng vẫn có vấn đề tiêu cực với APC.

Nếu bạn có PHP 5.5,
chỉ cần sử dụng Zend Opcache . Nó là ra khỏi hộp, vì vậy vấn đề là tối thiểu.

Nếu bạn có PHP 5.4,
tôi khuyên bạn nên sử dụng XCache . Nó hoàn toàn tương thích với PHP 5.4 và 5.5. Tích cực phát triển. Phiên bản ổn định cuối cùng đã được phát hành cách đây 3,5 tháng (ngày 10 tháng 10 năm 2013). Nó cải thiện hiệu suất ngay cả khi bạn sử dụng fastcgi.


1

Zend OPCache được bao gồm trong PHP 5.5 dưới tên php_opcache.dll trong thư mục php / ext. Để kích hoạt nó:

  • Thêm tệp php_opcahe.dll làm phần mở rộng zend trong tệp cấu hình php.ini của bạn .
  • Sử dụng định dạng zend_extension = path / to / php / ext / php_opcache.dll .
  • Đặt zend_extension trước zend_extension xDebug trong cấu hình php.ini của bạn .
  • Lưu tệp cấu hình php.ini của bạn và khởi động lại máy chủ của bạn.

0

APC có phiên bản mới: 3.1.14 kể từ ngày 2 tháng 1, giải quyết một số lỗi: http://pecl.php.net/package/APC

Tuy nhiên, tôi đã chạy PHP 5.4.x với APC 3.1.13 từ kho lưu trữ dotdeb mà không có bất kỳ sự cố nào cho đến nay, vì vậy đối với tôi, tôi sẽ nói rằng nó ổn định. dotdeb cũng đã thông báo cho tôi rằng họ sẽ đưa APC cập nhật vào phiên bản PHP tiếp theo, dự kiến ​​là 5.4.11.


Nếu bạn đang sử dụng APC 3.1.14, tôi khuyên bạn nên tạm thời hoàn nguyên về APC 3.1.13. Một số lỗi nghiêm trọng liên quan đến bộ nhớ đã được phát hiện dẫn đến việc bản phát hành 3.1.14 bị kéo khỏi phần tải xuống.
Leigh

Thật vậy, tôi thấy rằng gói do dotdeb phát hành cho PHP 5.4.11 ban đầu bao gồm APC 3.1.14 nhưng điều đó đã được hoàn nguyên để tránh lỗi.
Steven De Groote

0

Chúng tôi đang thử nghiệm lỗi không có bộ nhớ (apache segfault) với PHP 5.4.26 và APC 3.1.9. Có một lỗi mở cho APC trên PHP 5.4.X: https://bugs.php.net/bug.php?id=61934

Tôi khuyên bạn không nên sử dụng plugin này trên PHP> 5.3.


0

Trong phiên bản XAMPP 5.6.3 (PHP 5.6.3), tất cả những gì bạn phải làm trong ini.php của mình là:

[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"

Cấu hình cho symfony2 framework.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.