CGI (Common Gateway Interface) merupakan suatu bentuk hubungan interaktif
di mana client (browser) dapat mengirimkan suatu masukan kepada server,
dan server mengolah masukan tersebut serta mengembalikannya kepada client
(browser). Contoh sederhana adalah saat Anda menggunakan suatu search
engine. Saat Anda menuliskan keyword dan menekan tombol Search maka
browser akan mengirimkan keyword tersebut ke server. Keyword tersebut
lalu diolah oleh server dan server mengirimkan data hasil pengolahan
(yang sesuai dengan keyword yang kita masukkan) ke browser kita. Jadi
yang kita lihat pada browser hanya data yang sesuai dengan keyword yang
kita masukkan.
Program CGI ditulis dalam bahasa yang dapat dimengerti oleh sistem
misalnya C/C++, Fortran, Perl, Tcl, Visual Basic, dan lain-lain. Pemilihan
bahasa yang digunakan tergantung dari sistem yang digunakan. Jika kita
menggunakan bahasa pemrograman seperti C atau Fortran maka program-program
yang kita buat harus dikompile terlebih dahulu sebelum dijalankan sehingga
pada server akan terdapat source code dan program hasil kompilasi. Berbeda
bila kita menggunakan bahasa script seperti PERL, TCL, atau Unix Shell
maka hanya akan terdapat script itu sendiri (tanpa ada source code).
Banyak orang yang lebih suka memilih menggunakan script CGI dibandingkan
dengan bahasa pemrograman karena lebih mudah untuk di-debug dan dimodifikasi.
Dalam pembahasan kali ini kita akan menggunakan Perl sebagai bahasa
script-nya.
Cara kerja CGI :
- Aplikasi CGI, yang berupa file skrip, ditaruh di lokasi direktori yang dapat diakses oleh web server.
- Jika ada permintaan terhadap aplikasi dari klien, web server akan membaca skrip dan menjalankan program.
- Web server memberi program ini masukan (termasuk masukan yang diberikan klien) dari masukan standar (stdin) serta beberapa environment variable.
- Web server menunggu program berjalan hingga selesai lalu menangkap keluaran standar program (stdout). Keluaran inilah yang diberikan ke klien.
Kelebihan CGI
- Skrip CGI dapat ditulis dalam bahasa apa saja, namun barangkali sekitar 90% program CGI yang ada ditulis dalam Perl.
- Protokol CGI yang sederhana, serta
- Kefasihan Perl dalam mengolah teks, menjadikan menulis sebuah program CGI cukup mudah dan cepat.
Kelemahan CGI
- Kecepatan (skalabilitas).
Untuk menghasilkan keluaran
program CGI, overhead yang harus ditempuh cukup besar.
Dalam kasus CGI Perl, prosesnya sbb:
- Web server terlebih dahulu akan menciptakan sebuah proses baru dan menjalankan interpreter Perl.
- Perl kemudian mengkompilasi script CGI tersebut, baru kemudian menjalankan skrip.
Keseluruhan siklus ini terjadi untuk setiap request.
Dengan kata lain, terlalu banyak waktu dibuang untuk menciptakan proses dan
tidak ada cache skrip yang telah dikompilasi.
Jika sebuah situs web menerima kurang dari sepuluh
hingga dua puluh ribu hit CGI per hari, rata-rata mesin web server Unix yang
ada sekarang ini mampu menanganinya dengan baik.
Angka ini relatif, bergantung pada:
- Tingkat pembebanan mesin web server untuk melakukan pekerjaan lain (misalnya, mengirim mail dan menjalankan server database).
- Aplikasi CGI itu sendiri (sebab beberapa aplikasi CGI berupa skrip tunggal berukuran besar hingga waktu loading-nya cukup lama; umumnya aplikasi CGI yang rumit memecah diri menjadi skrip-skrip terpisah untuk mengurangi waktu loading).
- Cepat atau lambatnya penampilan halaman web yang diterima klien akan lebih bergantung pada koneksi jaringan.