Saya perlu menghapus semua entri cache APC ketika saya menggunakan versi baru situs. APC.php memiliki tombol untuk menghapus semua cache opcode, tapi saya tidak melihat tombol untuk menghapus semua Entri Pengguna, atau semua Entri Sistem, atau semua Entri Per Direktori.
Apakah mungkin untuk menghapus semua entri cache melalui baris perintah, atau cara lain?
php
performance
caching
apc
lo_fye
sumber
sumber
Jawaban:
Anda dapat menggunakan fungsi PHP
apc_clear_cache
.Memanggil
apc_clear_cache()
akan menghapus cache sistem dan memanggilapc_clear_cache('user')
akan menghapus cache pengguna.sumber
php -r "apc_clear_cache();"
Saya tidak percaya salah satu dari jawaban ini benar-benar berfungsi untuk membersihkan cache APC dari baris perintah. Seperti yang dikomentari Frank Farmer di atas, CLI berjalan dalam proses yang terpisah dari Apache.
Solusi saya untuk membersihkan dari baris perintah adalah menulis skrip yang menyalin skrip kliring APC ke
web
direktori dan mengaksesnya lalu menghapusnya. Script dibatasi untuk diakses dari localhost.apc_clear.php
Ini adalah file yang disalin skrip ke direktori web, mengakses, dan menghapus.
Script kliring cache
Skrip ini menyalin apc_clear.php ke direktori web, mengaksesnya, lalu menghapusnya. Ini didasarkan pada tugas Symfony. Dalam versi Symfony, panggilan dibuat ke bentuk salinan dan pembatalan tautan Symfony, yang menangani kesalahan. Anda mungkin ingin menambahkan cek bahwa mereka berhasil.
sumber
Saya tahu ini bukan untuk semua orang, tetapi: mengapa tidak melakukan restart anggun Apache?
Untuk misalnya dalam kasus Centos / RedHat Linux:
Ubuntu:
sumber
Ini tidak dinyatakan dalam dokumentasi, tetapi untuk menghapus cache opcode Anda harus melakukan:
EDIT: Ini sepertinya hanya berlaku untuk beberapa versi APC yang lebih lama ..
Apa pun versi yang Anda gunakan, Anda tidak dapat menghapus mod_php atau fastcgi APC cache dari skrip php cli karena skrip cli akan dijalankan dari proses berbeda seperti mod_php atau fastcgi. Anda harus memanggil apc_clear_cache () dari dalam proses (atau proses anak) yang Anda ingin hapus cache. Menggunakan curl untuk menjalankan skrip php sederhana adalah salah satu pendekatannya.
sumber
Jika Anda ingin menghapus cache apc dalam perintah: (gunakan sudo jika Anda membutuhkannya)
APCu
APC
sumber
Jika Anda menjalankan tumpukan NGINX / PHP-FPM, taruhan terbaik Anda adalah dengan memuat ulang php-fpm
service php-fpm reload
(atau apa pun perintah muat ulang Anda di sistem Anda)sumber
Sebagaimana didefinisikan dalam Dokumen APC:
Untuk menghapus proses cache:
sumber
Kemungkinan lain untuk penggunaan baris perintah, belum disebutkan, adalah menggunakan curl.
Ini tidak menyelesaikan masalah Anda untuk semua entri cache jika Anda menggunakan skrip stock apc.php, tetapi bisa memanggil skrip yang diadaptasi atau skrip lain yang telah Anda pasang.
Ini membersihkan cache opcode:
Ubah parameter OB ke 3 untuk menghapus cache pengguna:
Masukkan kedua baris dalam skrip dan sebut dengan $ PASSWORD di env Anda.
sumber
Jika Anda ingin memantau hasilnya melalui json, Anda dapat menggunakan skrip semacam ini:
Seperti disebutkan dalam jawaban lain, skrip ini harus dipanggil melalui http atau curl dan Anda harus diamankan jika terkena di root web aplikasi Anda. (dengan ip, token ...)
sumber
apc_clear_cache () hanya bekerja pada SAPI php yang sama dengan yang Anda ingin Anda cache dihapus. Jika Anda memiliki PHP-FPM dan ingin menghapus cache apc, Anda harus melakukannya melalui salah satu skrip php, BUKAN baris perintah, karena dua cache dipisahkan.
Saya telah menulis CacheTool , alat baris perintah yang memecahkan masalah ini dengan tepat dan dengan satu perintah Anda dapat menghapus cache PHP-FPM APC Anda dari baris perintah (itu terhubung ke php-fpm untuk Anda, dan menjalankan fungsi apc)
Ini juga berfungsi untuk opcache.
Lihat cara kerjanya di sini: http://gordalina.github.io/cachetool/
sumber
Stabil APC memiliki opsi untuk menghapus cache di antarmuka itu sendiri. Untuk menghapus entri tersebut, Anda harus masuk ke antarmuka APC.
APC memiliki opsi untuk mengatur nama pengguna dan kata sandi dalam file apc.php.
sumber
php-apc
paket yang terinstal di sistem Anda.jika Anda menjalankan fpm di bawah ubuntu, perlu menjalankan kode di bawah ini (diperiksa pada 12 dan 14)
sumber
apc.ini
apc.stat = "1" akan memaksa APC untuk membuat stat (memeriksa) skrip pada setiap permintaan untuk menentukan apakah telah dimodifikasi. Jika sudah dimodifikasi akan mengkompilasi ulang dan menyimpan versi yang baru.
Jika pengaturan ini tidak aktif, APC tidak akan memeriksa, yang biasanya berarti memaksa APC untuk memeriksa kembali file, server web harus direstart atau cache harus dibersihkan secara manual. Perhatikan bahwa konfigurasi server web FastCGI mungkin tidak menghapus cache saat restart. Pada server produksi di mana file skrip jarang berubah, peningkatan kinerja yang signifikan dapat dicapai oleh statistik yang dinonaktifkan.
sumber
Antarmuka Admin APC baru memiliki opsi untuk menambah / menghapus cache pengguna dan cache opcode, Salah satu fungsinya yang menarik adalah menambah / menyegarkan / menghapus direktori dari opCode Cache
Dokumentasi Admin APC
sumber
Solusi yang baik bagi saya adalah tidak menggunakan lagi cache pengguna yang sudah usang setelah digunakan.
Jika Anda menambahkan awalan ke masing-masing tombol Anda, Anda dapat mengubah awalan tentang mengubah struktur data entri cache. Ini akan membantu Anda mendapatkan perilaku berikut saat digunakan:
Ini hanya mungkin untuk cache pengguna.
sumber
Buat file APC.php
Jalankan dari browser Anda.
sumber
Pekerjaan saya di sekitar untuk Symfony build memiliki menjarah instance di server yang sama:
Langkah 1. Buat pemicu atau sesuatu untuk mengatur flag file (mis. Perintah Symfony) lalu buat
marker file
..Langkah 2. Pada file indeks saat mulai tambahkan kode kliring dan hapus
marker file
.Langkah 2. Jalankan aplikasi.
sumber
Kami memiliki masalah dengan APC dan symlinks ke symlinks ke file - sepertinya mengabaikan perubahan dalam file itu sendiri. Entah bagaimana melakukan sentuhan pada file itu sendiri membantu. Saya tidak tahu apa perbedaan antara memodifikasi file dan menyentuhnya, tapi entah kenapa itu perlu ...
sumber