Apakah APC kompatibel dengan PHP 5.4 atau PHP 5.5?

103

Sepertinya APC tidak diperbarui bertepatan dengan rilis php 5.4 (Saya berharap mereka memasukkan APC dalam inti PHP seperti yang direncanakan semula).

Saya tidak bisa menemukan jawaban pasti apakah APC saat ini berfungsi dengan php 5.4+. Saya berhasil menemukan paket Ubuntu untuk php 5.4, tetapi paket php-apc tidak dapat diinstal.

Greywire
sumber
2
Saya rasa Anda sedang melakukan instal apt-get. Sudahkah Anda mencoba menginstal pecl?
Darragh Enright
Ya, ini benar-benar berhasil. Terima kasih. Dan ternyata, APC bekerja dengan baik dengan 5.4, khususnya, saat menggunakan fungsi ciri baru.
Greywire
1
@Darragh [Sekadar memberi tahu] ada hadiah besar yang lumayan untuk ini, Anda mungkin ingin membuat jawaban.
Stan Tiberiu-Ionuț
1
Tidak, bukan. Rilis terakhirnya adalah pada 2012 dan itu sama sekali tidak kompatibel dengan versi PHP yang lebih baru
Abadis

Jawaban:

163

Zend OPCache termasuk dalam PHP 5.5

Pada 21 Maret 2013, PHP 5.5 beta 1 dirilis termasuk "Zend OPCache" - Sepertinya ini akan menjadi pengganti APC di masa mendatang karena sudah termasuk dalam inti PHP, dan harus dipertahankan untuk setiap yang baru melepaskan.

Saya pribadi akan menyarankan mereka yang bergantung pada APC untuk opcode caching untuk menguji kode mereka dengan cache opcode built-in yang akan datang, dan memberi umpan balik setiap masalah yang dihadapi untuk memastikan rilis akhir yang stabil.

Saya tidak tahu apa artinya ini untuk masa depan APC.

APC UNTUK PHP 5.4+ MASIH DILIHAT SEBAGAI BETA

Ini berarti pengembang tidak menganggapnya stabil sepenuhnya . Sementara banyak orang tidak mengalami masalah sama sekali dengan rilis SVN saat ini, masih ada laporan aneh kasus edge dari orang-orang di bawah konfigurasi tertentu, atau di bawah beban berat.

Seperti segala sesuatu yang Anda ingin menggunakan dalam lingkungan produksi, pastikan Anda benar-benar menguji setiap rilis (beta atau stabil) dalam pembangunan atau pra-produksi lingkungan pertama . Ini termasuk pengujian beban!

Sejak rilis 3.1.13, komit ke repositori SVN agak melambat dan daftar bug tidak memiliki banyak tambahan terbaru. Jadikan itu apa yang Anda mau.

Pada 10 Desember 2012 21:05, Rasmus Lerdorf menulis:

APC berada pada titik sekarang untuk 5,4 di mana menurut saya tidak ada lagi kasus tepi daripada yang kita miliki di 5,3. Tidak ada yang sempurna, tetapi cukup dekat untuk sebagian besar situs.

Siapapun dengan keahlian C / gdb dan waktu luang disarankan untuk mengabaikan daftar bug dan melihat apakah mereka dapat memperbaiki apapun, atau meningkatkan produk open source gratis yang kita semua andalkan ini.

Ada solusi alternatif, Wikipedia menyediakan daftar akselerator PHP .

Pada 13 Februari 2013, Zeev Suraski mengumumkan ketersediaan kode sumber Zend Optimizer + .

Telah ada diskusi yang cukup panjang tentang mengintegrasikan Zend Optimizer + ke dalam inti PHP di versi mayor berikutnya (versi setelah 5.5). Orang-orang mungkin ingin membiasakan diri dengan Zend Optimizer + terlebih dahulu, jika ini masalahnya.


Jangan gunakan APC 3.1.14

APC 3.1.14 telah dihapus dari unduhan PECL karena beberapa masalah memori serius yang telah ditemukan tetapi belum terlacak.

Jika Anda sudah menggunakan 3.1.14, Anda mungkin ingin menurunkan versi hingga 3.1.15 dirilis. Ingat, ini masih beta . Jika Anda menggunakannya sama sekali, Anda menggunakannya dengan risiko Anda sendiri.

2013-01-02 :
APC 3.1.14 tersedia , menambahkan kompatibilitas PHP 5.5, selain menyelesaikan sejumlah bug lainnya .

Masih beta


2012-09-03 :
APC 3.1.13 tersedia, memperbaiki sejumlah segfault .


2012/08/16 :
Sebuah APC 3.1.12 tag telah dibuat, namun masih ditandai sebagai beta , yang tersedia di halaman APC PECL , serta changelog .

Banyak bug terkait bin_dump yang diperbaiki kali ini.


2012-07-19 :
Sebuah APC 3.1.11 tag telah dibuat, namun masih ditandai sebagai beta , yang tersedia di halaman APC PECL , serta changelog . Saya telah mengikuti milis yang relevan, dan mereka masih secara aktif bekerja untuk memperbaiki bug APC namun ini adalah modul yang kompleks dan tampaknya tidak banyak orang yang mampu melakukannya. Rilis ini memperbaiki bug stat = 0 yang tidak menyenangkan saat menyertakan file.


2012/04/11 :
Sebuah APC 3.1.10 tag diciptakan hari ini, dan rilis beta dari 3.1.10 ditempatkan pada halaman APC PECL

The changelog negara:

  • Tambahkan dukungan PHP 5.4 (Dmitry, Anatoliy, Pierre)
  • Memperbaiki bug # 22679: Perbaiki apc_bin_dump untuk konstanta. Gunakan IS_CONSTANT_TYPE_MASK untuk menangani semua konstanta, termasuk yang tidak terkualifikasi (sebagai ganti ~ pemeriksaan ~ IS_CONSTANT_INDEX)
  • Memperbaiki bug # 23822, php macet saat apache restart
Leigh
sumber
1
cukup ketik: "pecl install apc-3.1.10" dan kemudian saya harus mengkompilasi ulang php sehingga akan memperbarui libphp5.so
targnation
Telah menggunakannya sejak Oktober 2012 melalui Apt-get di ubuntu 12. Bersih dan stabil!
JustinP
lihat artikel ini yang terkait dengan Zend OpCache dan APC blogs.oracle.com/opal/entry/using_php_5_5_s dan utas ini bugs.php.net/bug.php?id=64625
riotera
10

Mulai dari PHP 5.4.7 dan APC 3.1.13 (dan bahkan batang APC SVN per 2012-09-19), meskipun "kompatibel", ini tidak stabil pada server dengan beban berat, terutama jika Anda menggunakan PHP- FPM dan $ GLOBALS. Beberapa diskusi pengembang di APC berbicara tentang kasus pinggiran yang belum terselesaikan .

Saya menjawab pertanyaan ini 6 bulan setelah ditanya karena masalahnya masih umum, dan menghadapi utas ini tanpa jawaban seperti milik saya yang membuat saya melompat ke PHP 5.4 w / APC dan terbakar. Semoga ini akan membantu orang menghindari rasa sakit.

Eric Caron
sumber
5

Tidak, APC 1.3.9 (dan pada saat ini, bahkan svn trunk) tidak kompatibel dengan php 5.4.0, saya tahu karena saya baru saja menghabiskan berjam-jam mencoba membuatnya berfungsi (menguji berbagai svn / php. ini pengaturan / compiler flags / sebut saja).

Ini hanya konyol, APC adalah salah satu ekstensi PHP paling populer dan Anda akan berharap setelah berminggu-minggu melalui 8 PHP 5.4 RC mereka akan memiliki waktu untuk membuat APC bekerja di sampingnya.

Menyedihkan.

John Smith
sumber
Mungkin inilah mengapa APC tidak disertakan dengan PHP 5.4 seperti yang direncanakan semula .. Tampaknya berhasil ketika saya mengujinya, tetapi, saya hanya menguji sifat dan bukan fitur php 5.4 lainnya.
Greywire
2
Sepertinya satu-satunya kompiler cache / bytecode yang layak untuk php 5.4 adalah paket server zend milik Zend. PHP 5.4 membuat saya bersemangat tetapi tanpa APC atau XCache atau semacamnya, itu tidak berguna. Dan ini telah menjadi cerita PHP selama bertahun-tahun .. selalu menunggu, menunggu .. Saya mulai serius memikirkan untuk
mempelajari
Benar, bug segfault telah dilaporkan pada bulan Desember tahun lalu, dan 3 bulan kemudian masih belum diperbaiki, wtf adalah titik merilis 'peningkatan besar' jika itu bahkan tidak berfungsi dalam kondisi yang paling umum. [Bug # 60462 Saat APC diaktifkan segfault - Dikirim: 2011-12-07] bugs.php.net/bug.php?id=60462&edit=1
JohnSmith
5

Saya mencoba selama beberapa hari terakhir, dan tidak mungkin saya bisa mendapatkan opcode cacher untuk bekerja dengan php 5.4. Xcache tidak dapat dikompilasi, dan apc tidak akan mengenali kelas-kelas tertentu saat di-cache. Saya pikir ini adalah kesalahan yang dibicarakan Simon.

Saya mendengar ada beberapa perbaikan di bagasi, tetapi saya juga mencoba sumber bagasi terbaru, tetapi kesalahan yang sama terus muncul. Saya pikir php tanpa opcode cacher (saat ini tidak ada yang tersedia) tidak layak untuk diproduksi. Semoga orang-orang di apc akan memperbaiki ini secepatnya.

MEMPERBARUI!!!

Xcache 2.0.0-rc1 sudah keluar dan kompatibel dengan php 5.4. Nikmati!

Michiel Thalen
sumber
4

Saya menggunakan AMPPS dengan PHP Versi 5.5.19. Sejak beberapa waktu sekarang tepatnya dari rilis PHP 5.5 - APC diganti dengan Zend OPCache yang termasuk dalam PHP 5.5 ke atas. Sekarang yang harus Anda lakukan untuk mengaktifkan "APC" (saat ini "OPcache") adalah mengedit php.ini Anda. Sebelum bagian [XDebug] tambahkan garis mengalir:

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

...

Harap perhatikan bahwa kami perlu memiliki dua contoh :

zend_extension =

Satu di [OPcache] dan satu lagi di bagian [XDebug]. Xdebug sering tidak disediakan sebagai default di instalasi server xampp / ampps / easyPHP Anda. Anda mungkin menemukan diri Anda dalam situasi di mana Anda perlu mengunduh ekstensi Xdebug. Anda dapat melakukannya dengan mudah menggunakan aplikasi online yang menentukan Xdebug yang tepat untuk php Anda. Kunjungi http://xdebug.org/wizard.php dan ikuti instruksi sederhana mereka. Setelah Anda mengunduh versi Xdebug yang benar untuk versi php Anda - edit tautan zend_extension Anda di bagian [XDebug].

...

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

Tolong dicatat! bahwa Anda harus menambahkan bagian OPcache sebelum XDebug di file php.ini Anda !!! Jika Anda mengikuti saya dengan benar, Anda akan memiliki dua contoh zend_extension di file php.ini Anda (satu di OPcache dan satu di bagian Xdebug).

Ini bekerja dengan sempurna untuk kerangka Symfony2 , dan menghilangkan pesan rekomendasi untuk menginstal dan mengaktifkan APC untuk PHP dan Xdebug Anda.

Pesan untuk mereka yang menjalankan symfony 2 dan menghapus pesan peringatan dari "web / config.php", tetapi masih menemui masalah dengan menjalankan dari baris perintah "php app / check.php". Jika ini terjadi, itu berarti konsol Anda menggunakan file php.ini yang berbeda. Ubah variabel PATH sistem Anda - arahkan ke direktori php yang benar (di mana Anda memiliki file php.exe dan yang digunakan oleh server lokal Anda).

Jika Anda membutuhkan penjelasan lebih dalam beri tahu saya di komentar di bawah. Salam.

DevWL
sumber
1
Saya sangat menyarankan instruksi dari jawaban ini untuk digabungkan dengan jawaban teratas, sehingga setiap orang yang ingin mengimplementasikan OpCache tahu persis bagaimana melakukannya.
Joe
Jika Anda mengomentari xdebug "zend_extension" Anda akan mematikannya - tidak perlu. Menambahkan bagian [OPcache] dengan "zend_extension" tidak bertabrakan dengan parameter yang sama dari bagian [XDebug]. Juga urutan bagian tersebut tidak terlalu penting.
Marek
Catatan: [sumber: php.net/manual/en/opcache.installation.php] Jika Anda ingin menggunakan OPcache dengan »Xdebug, Anda harus memuat OPcache sebelum Xdebug.
DevWL
3

Sepertinya masih ada beberapa masalah yang harus diselesaikan. Periksa bug dan Anda mungkin bisa mencari tahu apa solusi untuk masalah khusus Anda.

Saya menangani satu kesalahan seperti itu beberapa jam yang lalu, dan ternyata menggunakan APC dari bagasi SVN adalah cara yang tepat. Semoga ini membantu!

Roberto
sumber
Sejauh ini, tampaknya berfungsi dengan baik. Ini ada di Ubuntu 10.04 (turnkey LAMP appliance) dengan paket PHP 5.4 dari launchpad.net/~ondrej/+archive/php5 . Tetapi jika sesuatu muncul, saya akan memeriksa daftar bug. Terima kasih!
Greywire
3

Saya telah menemukan bahwa Anda perlu menghapus cache opcode pada setiap permintaan halaman jika kelas yang mengimplementasikan antarmuka gagal dimuat. Ini dikompilasi dari trunk svn terbaru, Apache 2.4.1, PHP 5.4.0.

Simon
sumber
@ michiel-thalen Anda benar, itulah masalah yang saya bicarakan. Sungguh memalukan ... Meskipun saya masih melihat sedikit manfaat dalam kinerja bahkan dengan mengatur ulang opcode pada setiap pemuatan. Cache pengguna masih berfungsi sebagaimana mestinya (dalam pengujian saya sejauh ini).
Simon
2

APC - tidak disarankan
Secara pribadi saya tidak menggunakan APC dengan PHP 5.4 atau PHP 5.5, tetapi APC stabil terbaru tidak kompatibel dengan PHP 5.4, APC beta terbaru dapat digunakan dengan 5.4 tetapi tertulis bahwa masih memiliki masalah negatif dengan APC.

Jika Anda memiliki PHP 5.5
gunakan saja Zend Opcache . Ini di luar kotak, jadi masalahnya minimal.

Jika Anda memiliki PHP 5.4
saya merekomendasikan XCache . Ini sepenuhnya kompatibel dengan PHP 5.4 dan 5.5. Dikembangkan secara aktif. Versi stabil terakhir dirilis 3,5 bulan lalu (10 Oktober 2013). Ini meningkatkan kinerja bahkan jika Anda menggunakan fastcgi.

trante
sumber
1

Zend OPCache termasuk dalam PHP 5.5 dengan nama php_opcache.dll di direktori php / ext. Untuk mengaktifkannya:

  • Tambahkan file php_opcahe.dll sebagai ekstensi zend di file konfigurasi php.ini Anda .
  • Gunakan format zend_extension = path / to / php / ext / php_opcache.dll .
  • Tempatkan zend_extension sebelum xDebug zend_extension di konfigurasi php.ini Anda .
  • Simpan file konfigurasi php.ini Anda dan restart server Anda.
AKAR
sumber
0

APC memiliki versi baru: 3.1.14 sejak 2 Januari, yang menyelesaikan beberapa bug: http://pecl.php.net/package/APC

Namun, saya telah menjalankan PHP 5.4.x dengan APC 3.1.13 dari repositori dotdeb tanpa masalah apa pun sejauh ini, jadi bagi saya saya akan mengatakan itu stabil. dotdeb juga telah memberi tahu saya bahwa mereka akan menyertakan APC yang diperbarui dalam rilis PHP berikutnya, yang diharapkan adalah 5.4.11.

Steven De Groote
sumber
Jika Anda menggunakan APC 3.1.14 Saya menyarankan Anda untuk kembali ke APC 3.1.13 untuk sementara. Beberapa bug serius terkait memori telah ditemukan yang mengakibatkan rilis 3.1.14 ditarik dari bagian unduhan.
Leigh
Memang, saya menemukan bahwa paket yang dirilis oleh dotdeb untuk PHP 5.4.11 awalnya menyertakan APC 3.1.14 tetapi telah dikembalikan untuk menghindari bug.
Steven De Groote
0

Kami sedang melakukan percobaan kesalahan bebas memori (apache segfault) dengan PHP 5.4.26 dan APC 3.1.9. Ada bug terbuka untuk APC di PHP 5.4.X: https://bugs.php.net/bug.php?id=61934

Saya merekomendasikan untuk tidak menggunakan plugin ini di PHP> 5.3.

dAm2K
sumber
0

Di XAMPP Versi 5.6.3 (PHP 5.6.3) yang harus Anda lakukan di ini.php Anda adalah 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

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

Konfigurasi untuk kerangka symfony2.

DevWL
sumber