Rumah  >  Artikel  >  pembangunan bahagian belakang  >  如何解决PHP Ralat maut: Saiz memori X bait yang dibenarkan habis (cuba memperuntukkan bait Y)

如何解决PHP Ralat maut: Saiz memori X bait yang dibenarkan habis (cuba memperuntukkan bait Y)

王林
王林asal
2023-08-18 22:34:541176semak imbas

如何解决PHP Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)

Cara menyelesaikan PHP Ralat maut: Saiz memori bait yang dibenarkan habis (cuba memperuntukkan bait Y). Ralat ini biasanya disebabkan oleh menggunakan terlalu banyak sumber memori dalam kod, dan artikel ini akan memperkenalkan beberapa kaedah untuk menyelesaikan masalah ini.

Tingkatkan had memori
  1. X yang dipaparkan dalam mesej ralat ini ialah had memori persekitaran PHP semasa Anda boleh meningkatkan had memori dengan mengubah suai php.ini. Mula-mula, cari fail konfigurasi php.ini, dan kemudian cari dua baris berikut:
memory_limit = XM

Ubah suai XM di dalamnya kepada nilai yang lebih besar, seperti 128M atau 256M. Selepas menyimpan fail, mulakan semula pelayan web untuk berkuat kuasa.

Optimalkan kod
  1. Dalam kod, kita harus cuba mengurangkan penggunaan memori. Berikut ialah beberapa cara untuk mengoptimumkan kod anda:

Elak menggunakan pembolehubah global: Pembolehubah global akan sentiasa menduduki memori, anda boleh menggunakan pembolehubah tempatan atau lulus pembolehubah sebagai parameter fungsi.

Elakkan menggunakan tatasusunan atau objek yang besar: Apabila memproses sejumlah besar data, cuba gunakan iterator atau penjana untuk mengurangkan penggunaan memori.

Keluarkan sumber yang tidak digunakan lagi: Keluarkan pembolehubah, objek atau dereference yang tidak digunakan lagi tepat pada masanya dalam kod supaya mekanisme pengumpulan sampah PHP dapat melepaskan memori dalam masa.

Gunakan cache
  1. Menggunakan cache boleh mengurangkan penggunaan memori dan meningkatkan kecekapan menjalankan kod. Berikut ialah beberapa cara untuk menggunakan caching:

Gunakan fungsi caching: Terdapat banyak fungsi dalam PHP yang boleh digunakan untuk caching, seperti

dsb.

apc_store()apc_fetch()file_get_contents()Gunakan komponen caching: Anda boleh menggunakan beberapa komponen caching pihak ketiga, seperti Memcached, Redis, dsb., untuk menyimpan data yang perlu dibaca dan ditulis dengan kerap dalam cache.

Gunakan enjin templat: Gunakan enjin templat untuk cache beberapa kandungan statik dan meningkatkan kelajuan permintaan seterusnya.

Pemprosesan paging
  1. Apabila anda perlu memproses sejumlah besar data, anda boleh menggunakan paging untuk memproses hanya sebahagian daripada data pada satu masa. Melalui paging, penggunaan memori boleh dikawal dalam julat yang boleh diterima.

Berikut ialah contoh kod untuk pemprosesan paging:

$page = $_GET['page']; // 获取当前页码
$pageSize = 10; // 每页显示的数据量
$offset = ($page - 1) * $pageSize; // 计算偏移量

$sql = "SELECT * FROM `table` LIMIT $offset, $pageSize"; // 构建SQL查询语句

// 执行查询并处理结果
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) {
    // 处理每一行数据
}

Melalui pemprosesan paging, hanya data yang diperlukan untuk nombor halaman semasa diproses, yang boleh mengurangkan penggunaan memori.

Ringkasan

Apabila ralat Fatal PHP: Saiz memori X bait yang dibenarkan telah kehabisan (cuba memperuntukkan bait Y) berlaku, kita harus terlebih dahulu meningkatkan had ingatan, dan kemudian mengurangkan kesan dengan mengoptimumkan kod, menggunakan caching dan paging Penggunaan memori. Kaedah ini boleh membantu kami menyelesaikan masalah limpahan memori dan memastikan operasi normal kod.

Atas ialah kandungan terperinci 如何解决PHP Ralat maut: Saiz memori X bait yang dibenarkan habis (cuba memperuntukkan bait Y). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn