Chunk Untuk Meminimalkan Pengunaan Memori Di Laravel

Chunk untuk meminimalkan pengunaan memori di laravel.Chunk biasa digunakan jika aplikasi web yang kita buat memiliki penggunaan data yang besar,baik saat memasukkan atau mengeluarkan data.Hal ini akan dialami terutama jika aplikasi web sudah berjalan dalam kurun waktu yang lama atau skala aplikasi yang cukup besar.

Fungsi utama chunk sendiri untuk mengurangi pengunaan memori selama pemrosesan data yang banyak,sehingga membantu mengurangi beban server, yang bisa berdampak dalam kecepatan website,terutama jika digunakan oleh banyak user.

Di PHP sendiri sebenarnya terdapat juga fitur chunk,tetapi yang kita bahas disini adalah pengunaan chunk di laravel itu sendiri.Dibawah ini akan diberikan contoh perbandingan pengunaan chunk dan perbandingan kecepatannya,dengan kasus export 100.000 data dari database ke csv.

Code Tanpa Chunk

<?php
public function export(){
    $begin = memory_get_usage();
    $data = Person::all();
    $handle = fopen('export.csv', 'w');
    foreach ($data as $row) {
        fputcsv($handle, $row->toArray(), ';');
    }
    fclose($handle);
    $end = (memory_get_usage()-$begin);
    echo "Memory Usage: " . ($end/1048576) . " MB \n";
}

Code Dengan Chunk

<?php
public function export(){
    $begin = memory_get_usage();
    $handle = fopen('export.csv', 'w');

    Person::chunk(1000, function ($persons) use ($handle) {
        foreach ($persons as $row) {
            fputcsv($handle, $row->toArray(), ';');
        }
    });

    fclose($handle);
    $end = (memory_get_usage()-$begin);
    echo "Memory Usage: " . ($end/1048576) . " MB \n";
}

Setelah di coba di device yang sama,tanpa chunk memori yang digunakan 109.26644897461 MB dan dengan chunk memori yang digunakan 0.24348449707031 MB.Bisa dilihat perbedaan penggunaan memori yang sangat jauh.1000 adalah nilai dari chunk size

Note : Chunk Size 1000 mungkin bukanlah yang paling optimal untuk meminimalkan pengunaan memori,coba ganti nilai dari chunk size untuk menemukan yang paling cocok dengan kasus teman-teman.

Sekian tutorial kali ini,jika ada yang kurang jelas bisa ditanyakan dibawah.Kalau diatas susah gak ada kolom komentar.