Demo Program |
Pada CodeIgniter ada fitur hooks yang bisa kita modifikasi dan kita manfaatkan untuk mengikuti proses eksekusi tertentu tanpa meretas file inti dari Codeigniter itu sendiri. Sumber (CodeIgniter Hooks).
Dalam project nyata saya menggunkan hooks untuk mencatat dan menyimpan query yang di eksekusi saat aplikasi dijalankan. Contohnya ketika user menjalankan aplikasi dan melakukan aksi-aksi seperti menampilkan data, menambah data, mengedit data dan menghapus data. Maka aksi dari user tersebut akan disimpan dalam bentuk Query (SQL) dan disimpan dalam file dengan ektensi yang dapat kita tentukan seperti .txt, .php, .sql dll.
Untuk lebih mengerti bagaimana cara penggunaan hooks dan seperti apa output programnya silahkan ikuti tutorial ini sampai akhir.
Langkah 1 Mengaktifkan fitur hooks, ubah FALSE menjadi TRUE di direktori application/config/config.php
$config['enable_hooks'] = TRUE;
<?phpdefined('BASEPATH') OR exit('No direct script access allowed');/*| -------------------------------------------------------------------------| Hooks| -------------------------------------------------------------------------| This file lets you define "hooks" to extend CI without hacking the core| files. Please see the user guide for info:|| https://codeigniter.com/user_guide/general/hooks.html|*/$hook['post_controller'] = array( // post_controller menunjukan eksekusi hooks setelah pengontrolan selesai'class' => 'Db_log', // Nama Class'function' => 'logQueries', // Nama method yang di eksekusi dari class'filename' => 'db_log.php', // Nama File Hook'filepath' => 'hooks' // nama folder tempat file hook disimpan);
<?php// Nama dari class yg disebutkan di file hooks.phpclass Db_log{function __construct(){date_default_timezone_set("Asia/Jakarta");}// Nama dari method yang disebutkan di file hooks.phpfunction logQueries(){$CI = & get_instance();$filepath = APPPATH . 'logs/QueryLog-' . $CI->session->userdata('nama_lengkap') . "-". date('d-M-Y') . '.txt'; // Buat file query log dengan tgl hari ini di folder application/logs$handle = fopen($filepath, "a+"); // buka file dg mode Read/write$times = $CI->db->query_times; // ambil waktu eksekusi dari semua query yg di eksekusi oleh controller$dir = "----------" . $CI->router->directory . $CI->router->class . "/" . $CI->router->method . "----------";fwrite($handle, $dir . "\n");foreach ($CI->db->queries as $key => $query) {if($query){$sql = $CI->session->userdata('nama_lengkap') . " - " ."Tanggal/Waktu : ". date("d-M-Y/H:i:s A") . " => " . trim(preg_replace('/\s+/', ' ', $query)) . " Execution Time:" . $times[$key]; // Generate hasil queryfwrite($handle, $sql . "\n"); // tulis di file log}}fclose($handle); // Close the file}}
0 Komentar