Cara mengaktifkan PHP OPcache

Untuk memaksimalkan performa PHP pada server anda maka menggunakan teknologi caching untuk menyimpan konten – konten yang sering diakses pada lokasi yang strategis (seperti memori) akan sangat membantu. Salah satu yang bisa anda pakai adalah PHP OPcache yang sudah tersedia secara default di PHP 5.6, jadi anda tidak perlu menginstall apa – apa tinggal mengaktifkan fiturnya saja.

Nah yang perlu kita lakukan cukup mudah dan sederhana, silahkan akses file konfigurasi PHP di php.ini kemudian edit kode berikut:

[opcache]
; Determines if Zend OPCache is enabled
opcache.enable=1

Sesuaikan dengan potongan kode diatas, awalnya ada komentar (;) diawal opcache.enable dan nilainya juga harus diganti dari 0 menjadi 1 untuk menghidupkan OPcache.

Aslinya sih sudah selesai, tapi kita bisa lebih mengoptimalkan setting OPcachenya:

  • Tingkatkan memori yang digunakan OPcache:
    opcache.memory_consumption=128

    Satuannya adalah MB, defaultnya kalau tidak salah 64MB tapi saya ubah menjadi 128MB.

  • Berapa banyak file .php yang dicache:
    opcache.max_accelerated_files=2000

    Defaultnya sendiri sudah cukup besar, tapi kalau script PHP anda cukup banyak tinggal disesuaikan lagi.

Rata – rata opsi tambahan OPcache dalam keadaan nonaktif, diberi simbol komentar diawalnya. Jadi perlu dihapus dan diganti nilainya bila perlu.

Setelah itu silahkan restart layanan web server anda, bisa httpd (Apache) atau nginx atau yang lainnya lagi. Saya yakin anda sudah paham caranya.

Bagaimana kita tahu kalau OPcache ini berhasil aktif digunakan? Anda bisa membuat file php yang berisikan kode phpinfo(); kemudian panggil saja, atau sekalian saja melihat statistik OPcache dari pembahasan saya sebelumnya.

Semoga bermanfaat. 🙂

13 thoughts on “Cara mengaktifkan PHP OPcache

  1. mas chandra, pada bagian berapa banyak file .php yang dicache apakah setelah sampai di angka 2000 sesuai konfigurasi di atas otomatis kembali ke angka 0 atau harus di restart manual dengan perintah service php-fpm restart? pertanyaan yg sama juga untuk memcached apakah harus manual juga dengan perintah service memcached restart?

    • Aslinya 2000 itu sudah sangat banyak mbak, apalagi kalau satu server isinya cuma 1 website. Misalkan servernesia ini kan WordPress dengan berbagai macam pluginnya, file .php tidak sampai 400 dan memori masih digunakan 24MBan. Jadi kasarnya 4 atau 5 situs WordPress masih ngatasi pakai defaultnya. Tahu darimana data diatas? Pakai OPcache GUI yang kemarin saya bahas bisa terlihat mbak. Hehe. 😀

      Kalau misal sudah melewati batas maksimal filenya maka yang sudah lama tidak digunakan cachenya akan dihapus mbak, kalau di kuliah manajemen dulu sistem FIFO (First In First Out) jadinya. 😛 Pokoknya cuma ditampung sesuai batas yang telah ditentukan.

      Nah… tidak perlu restart kalau soal batasan file php yang dicache, sudah otomatis dimanage oleh PHP-FPMnya. Untuk memcached juga sama mbak, pokoknya sudah aktif kalau misal data yang ingin disimpan sudah melewati setting maka yang telah tidak dipakai ya dibuang. Prioritas untuk cache file yang sering diakses.

      Singkatnya restart PHP OPcache atau Memcached ini cuma dilakukan setelah ganti konfigurasi. 🙂

      • trims penjelasannya mas chandra,,sebelumnya saya juga sudah pakai OPcache GUI cuma penasaran saja kalau sudah indikatornya 100% dibagian Hit Rate apa kembali ke 0% 😀

      • Oh kalau Hit Rate itu relasinya bukan dengan banyak file yang dicache mbak, melainkan dari sekian banyak permintaan file php berapa persen yang dimuat dari OPcache. Jadi kalau misal 100% berarti seluruh request dilayankan lewat cache, ini berarti sudah sangat optimal performanya. 🙂

    • Harus mengganti versi PHP bawaannya mas, untuk VestaCP versi 0.9.8 berarti dari 5.4 menjadi 5.6. Ini saya asumsikan di CentOS 6 ya.

      Nginx dan Apache distop dulu

      service nginx stop
      service httpd stop

      Hapus PHP

      yum remove php -y

      Tambahkan repository Remi:

      #Untuk CentOS 6 32-bit
      wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
      #Untuk CentOs 6 64-bit
      wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
      rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

      Edit file /etc/yum.repos.d/remi.repo dan ubah enabled dari 0 menjadi 1 untuk mengaktifkan repo ini.

      Silahkan lakukan instalasi PHP 5.6 dan aplikasi lainnya untuk VestaCP:

      yum install php php-bcmath php-cli php-common php-gd php-imap php-mbstring php-mcrypt php-mysql php-pdo php-soap php-tidy php-xml php-xmlrpc php-pecl-apc phpMyAdmin roundcubemail php-opcache php-xdebug -y

      Pindahkan data software tambahan yang diinstall tadi agar VestaCP menggunakan data yang baru:

      mv -f /etc/roundcubemail/db.inc.php.rpmsave /etc/roundcubemail/db.inc.php
      mv -f /etc/roundcubemail/main.inc.php.rpmsave /etc/roundcubemail/main.inc.php
      mv -f /etc/phpMyAdmin/config.inc.php.rpmsave /etc/phpMyAdmin/config.inc.php

      Setelah itu jalankan lagi web servernya:

      service nginx start
      service apache start

      Selesai.

      Karena ini modifikasi yang cukup signifikan saya anjurkan agar sebelumnya melakukan backup data. Jaga – jaga kalau ada apa – apa bisa langsung dipulihkan.

  2. Selamat pagi mas chandra, saya lutfi.. Mohon bantuannya saya new bie.. Saya memakai self hosting, saat akan menginstall Drupal versi 8 ada peringatan saya harus install OPcache.. Mas chandra mohon bantuannya cara install OPcache di self hosting bagaimana mana ya?

    • Halo Lutfi, maksudnya self hosting ini seperti apa ya mas? Asumsi saya juga pakai VPS? OSnya Debian/Ubuntu/CentOS?

      Aslinya cara installnya sederhana mas, asumsi minimal PHP 5 ya:

      • Debian/Ubuntu
        apt-get install php5-opcache
      • CentOS
        yum install php5-opcache

      Dan seharusnya anda tidak perlu melakukan ini karena sudah secara default diikutkan sejak PHP 5.5.

  3. Iyaa mas saya pakainya cpanel.idhostinger.com

    Nah saya memang sudah setting php nya ke versi 5.5.. Tp pas saya install drupal muncul peringatan OPcache perlu install mas

    • Waduh… shared hosting ya mas. 🙁 Saya bahasnya VPS sih.

      Kalau ini solusinya ya minta tolong ke supportnya mas untuk modul OPcachenya. Di panelnya ga ada fitur pilih – pilih modul PHP?

  4. Drupal 8.2.1 3/8
    Installation tasks
    Review persyaratan
    Web server Apache
    PHP 5.6.21
    Ekstensi PHP Aktif
    Peringatan PHP OPcode caching Tidak aktif
    PHP OPcode caching can improve your site’s performance considerably. It is highly recommended to have OPcache installed on your server.
    Database mendukung Aktif
    Batasan memori PHP 512M
    Sistem file Bisa ditulis (metode unduh publik)
    Pustaka Unicode Ekstensi Mbstring PHP
    Berkas pengaturan ./sites/default/settings.php sudah ada.
    Berkas pengaturan Berkas pengaturan dapat ditulisi. Cek pesan lalu ulangi, atau Anda dapat melanjutkan ke lanjutkan saja.

  5. mas chandra,
    untuk php versi 7.1.4 saya lihat di file php.ini tidak ada baris :

    ; Determines if Zend OPCache is enabled
    opcache.enable=1

    saya coba cek di via info.php status opcache up and running.
    lalu saya coba buka file /etc/php.d/10.opcache.ini, ada baris berikut :

    ; Enable Zend OPcache extension module
    zend_extension=opcache.so
    
    ; Determines if Zend OPCache is enabled
    opcache.enable=1

    jadi apa perlu juga ditambahkan baris di atas kedalam file php.ini? memang apa bedanya? toh statusnya sudah up and running.

    • Sama saja kok mbak, cuma ini dipisahkan saja dengan sistem modul supaya konfigurasi utama tidak terlalu banyak atau tidak rapi. Jadi konfigurasi PHP apapun yang diletakkan dalam direktori /etc/php.d/ akan otomatis ikut dibaca dan dimuat.

      Nginx juga bisa pakai sistem serupa. 🙂

Leave a Comment