0Pricing
PHP Academy · Pelajaran

Manajemen Memori dan Kiat Performa

Bebaskan memori lebih awal, hindari penyalinan array besar, dan gunakan generator untuk set data besar.

Manajemen Memori dan Kiat Performa adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Manajemen Memori PHP

PHP menggunakan penghitungan referensi dengan pengumpul siklus untuk pengumpulan sampah. Setiap permintaan dimulai dengan heap baru — proses yang berjalan lama (pekerja, Horizon) dapat menumpuk kebocoran memori.

memory_limit

Tetapkan batas memori yang sesuai di php.ini. Jika batas tersebut terlampaui, kesalahan fatal akan terjadi.

# php.ini:
memory_limit = 256M

// Check at runtime:
echo memory_get_usage(true)   / 1024 / 1024 . " MB";
echo memory_get_peak_usage(true) / 1024 / 1024 . " MB peak";

Menghapus Variabel Besar

Bebaskan memori secara eksplisit saat larik atau objek besar tidak lagi diperlukan dalam fungsi yang panjang.

<?php
$data = loadLargeDataset();
processData($data);
unset($data); // free immediately, do not wait for end of scope
gc_collect_cycles(); // force garbage collection if circular references

Generator untuk Kumpulan Data Besar

Gunakan generator untuk memproses berkas besar atau hasil kueri satu baris setiap kali tanpa memuat semuanya ke dalam memori.

<?php
function readCsvLines(string $file): Generator {
    $fh = fopen($file, "r");
    while (($line = fgetcsv($fh)) !== false) {
        yield $line;
    }
    fclose($fh);
}

foreach (readCsvLines("large.csv") as $row) {
    importRow($row);
}

Hindari Menyalin Larik Besar

PHP menggunakan strategi salin saat tulis untuk larik. Menetapkan sebuah larik ke variabel tidak menyalinnya sampai salah satunya diubah. Teruskan larik besar melalui referensi jika mutasi diperlukan.

<?php
function processArray(array &$data): void {
    // & avoids a copy when the parameter is modified
}

Penggabungan String dalam Perulangan

Membangun string dengan menggabungkannya dalam perulangan tidak efisien untuk string yang sangat besar. Gunakan larik dan implode().

<?php
// Slow for large N:
$str = "";
foreach ($items as $item) $str .= $item->format()."\n";

// Faster:
$parts = [];
foreach ($items as $item) $parts[] = $item->format();
$str = implode("\n", $parts);

Menyimpan Hasil Pembuatan Objek dalam Cache

Membuat instans, terutama dengan logika konstruktor, di dalam perulangan intensif membutuhkan banyak sumber daya. Jika memungkinkan, simpan instans dalam cache atau gunakan objek ringan.

Hindari Pemanggilan Fungsi Berulang

Pindahkan pemanggilan fungsi konstan ke luar perulangan jika hasilnya tidak berubah pada setiap iterasi.

<?php
// Slow:
for ($i = 0; $i < count($items); $i++) { ... }

// Fast (count() called once):
$n = count($items);
for ($i = 0; $i < $n; $i++) { ... }

Penyetelan Pekerja PHP-FPM

Konfigurasikan jumlah pekerja PHP-FPM berdasarkan memori yang tersedia dan konkurensi yang diperkirakan. Aturan kasarnya: jumlah pekerja = RAM / (rata-rata penggunaan memori per pekerja).

OPcache dan Pemuatan Awal

Aktifkan OPcache, yang dibahas pada pelajaran sebelumnya, dan muat lebih awal kelas kerangka kerja yang sering digunakan. Hal ini menghilangkan beban penguraian dan kompilasi pada setiap permintaan.

Lakukan Pemrofilan Terlebih Dahulu

Selalu lakukan pemrofilan sebelum mengoptimalkan. Optimasi kecil pada kode yang bukan menjadi hambatan hanya membuang waktu dan mengurangi keterbacaan. Gunakan Xdebug atau Blackfire untuk menemukan jalur kode yang sebenarnya paling sibuk.

Ringkasan

Gunakan generator untuk kumpulan data besar. Hapus pengaitan variabel setelah selesai digunakan. Hindari menyalin array besar. Pindahkan pemanggilan konstan ke luar perulangan. Lakukan pemrofilan dengan Xdebug untuk menemukan hambatan yang sebenarnya sebelum mengoptimalkan.

Pemeriksaan Singkat

Apa manfaat utama generator PHP untuk kumpulan data besar?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Manajemen Memori dan Kiat Performa” gratis?

Ya — teks lengkap “Manajemen Memori dan Kiat Performa” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Manajemen Memori dan Kiat Performa”?

Bebaskan memori lebih awal, hindari penyalinan array besar, dan gunakan generator untuk set data besar. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Manajemen Memori dan Kiat Performa” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membuat Profil PHP dengan Xdebug
  2. OPcache: Caching Bytecode
  3. Mengoptimalkan Kueri Basis Data
  4. Manajemen Memori dan Kiat Performa
← Kembali ke PHP Academy