author Ahmad Muhardian

Aplikasimu Lambat? Coba Cek dengan Profiler di Codeigniter


Codeigniter

Pernah dengar profiler?

Kalau belum, artikel ini tepat untukmu.

Codeigniter memang memudahkan kita dalam membuat aplikasi web.

Meskipun kita sudah tahu… MVC adalah desain pola yang dipakai Codeigniter, tapi masih aja ada orang yang menulis kode berantakan.

Akibatnya:

Aplikasi berjalan lambat dan terasa berat.

Nah si Profiler ini akan memberitahu kita, kelemahan dari aplikasi.

Seperti:

  • Berapa lama Waktu yang dibutuhkan untuk eksekusi controller
  • Query apa saja yang dieksekusi
  • Kecepatan eksekusi query
  • Data yang terkirim
  • dan sebagainya.

Sebenarnya kurang cocok disebut “kelemahan” sih, tapi dari data profiler ini kita akan bisa tahu kelemahan dari aplikasi yang sedang dikembangkan.

Apa itu Profiler?

Profiler adalah sebuah class yang akan membantu kita mengukur (benchmark) kecepatan eksekusi dari beberapa bagian kode di Codeigniter seperti query, controller, dll.

Bahkan juga memberitahu kita seberapa banyak memori yang terpakai, controller yang dieksekusi, data yang dikirim, dan lain sebagainya.

Biasanya Profiler digunakan untuk debugging dan optimasi aplikasi. 1

Profiler ini tidak aktif secara default, karena itu kita harus mengaktifkannya.

Caranya gimana?

Begini:

Cara Mengaktifkan Profiler CodeIgniter

Cara mengaktifkan Profiler di CodeIgniter sangatlah mudah, cukup dengan menjalankan fungsi ini di controller.

$this->output->enable_profiler(TRUE);

Maka kita akan mendapatkan informasi seperti berikut ini:

Profiler CodeIgniter

Kemudian, agar Profiler aktif di setiap method atau fungsi, letakan kode tersebut di dalam konstruktor:

function __construct(){
    parent::construct();

    // untuk debugging
    $this->output->enable_profiler(TRUE);
}

Menonaktifkan Profiler CodeIgniter

Cara menonaktifkannya, kita bisa menghapus fungsi tersebut atau mengubah parameternya menjadi false.

$this->output->enable_profiler(FALSE);

Tapi nanti masalahnya, saat kita mau deploy ke server…

…kita harus mengubah setiap fungsi profiler menjadi FALSE.

Hal ini tidak efektif.

Lalu bagaimana solusinya?

Solusinya kita bisa memanfaatkan variabel ENVIRONTMENT.

$this->output->enable_profiler(ENVIRONMENT == 'development');

Jadi jika nilai variabel ENVIRONTMENT adalah development (localhost), maka dia akan menghasilkan nilai TRUE.

Tapi kalau nilai variabel ENVIRONTMENT adalah production, maka akan menghasilkan nilai FALSE.

Kita bisa membuat variabel ENVIRONTMENT di dalam index.php:

switch($_SERVER["HTTP_HOST"]){
  case "localhost":
      define('ENVIRONMENT', 'development');
  break;
  default:
      define('ENVIRONMENT', 'production');
  break;
}