Sekilas Tentang Pemrograman dan Interpreter PHP

PHP atau yang merupakan singkatan rekursif dari PHP Hypertext Preprocessor adalah bahasa scripting yang dapat disisipkan kedalam HTML. Syntax yang terdapat pada PHP mirip dengan pemrograman C/C++, oleh karena itu PHP banyak sekali digunakan untuk merancang sebuah situs web yang dinamis yang juga dapat berinteraksi dengan sistem manajemen database. Bahasa pemrograman PHP termasuk kedalam kategori server-side scripting dimana kode PHP akan dieksekusi oleh server terlebih dahulu sebelum dapat ditampilkan pada web browser milik client. Oleh karena itu, sebuah script PHP tidak dapat dieksekusi langsung oleh sebuah web browser, melainkan harus diproses menggunakan interpreter PHP.

Logo PHP
 

Interpreter PHP pada umumnya diimplementasikan sebagai modul web server secara native, maupun dieksekusi menggunakan CGI. Setelah code PHP ditafsirkan dan diolah, maka kemudian web server akan mengirimkan output ke client yang melakukan permintaan tersebut, biasanya output dalam bentuk bagian dari halaman web yang dihasilkan. Sebuah kode PHP dapat menghasilkan kode html, text, gambar, atau bentuk data lainnya.

Dengan beberapa kelebihan dari PHP tersebut, kita dapat membangun sebuah website berbasis CMS, dapat melakukan manipulasi data (misalnya saja membuat, membuka, dan membaca suatu file) atau melakukan pengelolaan data.

Jenis-jenis Aplikasi Interpreter PHP

Apache Module (mod_php)

Menggunakan mod_php untuk mengeksekusi script PHP pada sebuah web server merupakan metode yang paling populer, karena hingga saat ini merupakan mode default yang diberikan oleh web server Apache ketika membuat sebuah website. Ketika menggunakan mod_php, interpreternya akan disipkan kedalam setiap proses Apache yang dipanggil oleh server. Dengan cara ini setiap worker dari Apache dapat mampu menangani dan mengeksekusi script PHP itu sendiri, sehingga tidak lagi memerlukan pemrosesan secara eksternal seperti halnya yang dilakukan oleh CGI atau FastCGI. Hal ini menjadi sangat berguna untuk menjalankan situs php murni yang berat (misalnya WordPress, Drupal, dan Joomla), dimana terdapat banyak kode-kode PHP yang harus dieksekusi. Semua permintaan tersebut dapat ditangani oleh Apache.

Karena interpreter dimulai bersamaan dengan proses Apache, memungkinkan eksekusi PHP diproses lebih cepat, karena informasi dapat disimpan dalam memory, sehingga proses yang sama tidak perlu diulang setiap kali script dijalankan. Namun demikian terdapat kekurangan yaitu setiap proses Apache membutuhkan sumber daya yang lebih besar. Bahkan ketika hanya melayani konten statis seperti gambar, suara, stylesheet dimana tidak ada kode PHP yang harus dieksekusi, prosesnya tetap memuat interpreter PHP.

Kelebihan

  • Kode PHP dapat dieksekusi langsung oleh Apache
  • Tidak membutuhkan proses eksternal
  • Performa sangat baik pada situs PHP kelas berat

Kekurangan

  • Membuat setiap proses Apache yang berjalan menggunakan memori yang besar
  • Tetap memuat interpreter PHP untuk konten yang tidak mengandung script PHP
  • File yang dibuat oleh script PHP biasanya dimiliki oleh akun web server, sehingga kamu tidak dapat mengeditnya menggunakan FTP

FastCGI

Diperkenalkan sebagai jalan tengah antara modul PHP Apache dan aplikasi CGI. Hal ini memungkinkan script untuk dieksekusi oleh interpreter eksternal diluar web server, dimana terdapat manfaat dalam hal keamanan, namun tidak mengurangi efisiensinya. Ketika script PHP dijalankan dengan FastCGI, setiap permintaan dilewatkan dari aplikasi web server yang digunakan ke aplikasi FastCGI melalui soket komunikasi ataupun TCP. Hal ini dapat memungkinkan untuk skalabilitas yang lebih besar dimana web server dan interpreter PHP dapat dibagi ke dalam lingkungan yang tersendiri jika diperlukan. Namun, hasil akhir yang sama juga dapat dicapai menggunakan aplikasi web server Nginx sebagai front-end dari web server Apache (dimana nginx dapat menangani permintaan terhadap konten statis, dan hanya melewati permintaan dinamis untuk diproses oleh Apache).

Kelemahan menjalankan PHP dengan FastCGI adalah bahwa setiap directive PHP yang didefinisikan dalam .htaccess menjadi tidak berguna. Sebagai solusinya dimungkinkan untuk mengatur directive PHP per domain dengan file kustom php.ini.

Kelebihan

  • Peningkatan keamanan dimana eksekusi kode PHP terisolasi dari web server
  • Konten statis tidak diproses oleh interpreter PHP
  • Mengijinkan file dikelola oleh user FTP tanpa mengubah permission

Kekurangan

  • Tidak dapat menggunakan directive PHP pada file .htaccess
  • Membutuhkan permintaan PHP untuk diloloskan dari web server

PHP-FPM

adalah cara lain untuk menggunakan interpreter PHP secara eksternal dengan web server, merupakan implementasi alternatif dari FastCGI dengan beberapa fitur tambahan yang berguna pada situs web yang berjalan pada VPS dengan sumber daya terbatas atau menggunakan multiple server. PHP-FPM memberikan kemampuan administratid untuk menghentikan dan menjalankan setiap worker PHP dengan sempurna, tanpa harus mengalami kehilangan query yang sedang dijalankan. Dengan demikan, kamu dapat mengubah atau memperbarui konfigurasi secara bertahap. Setiap worker dapat memiliki uid, gid, dan lingkungan chroot yang berbeda-beda.

Kelebihan

  • Kompatibel dengan banyak aplikasi web server
  • Penggunaan memory yang lebih kecil dibandingkan dengan mod_php
  • Opsi konfigurasi yang lebih banyak dibandingkan FastCGI

Kekurangan

  • Membutuhkan konfigurasi lebih banyak daripada mod_php
  • Tidak terlalu luas digunakan dalam komunitas
  • Masih merupakan proyek yang relatif muda, belum sematang mod_php dan FastCGI
 

Leave a Reply