Pesan kesalahan ini disajikan, ada saran?
Ukuran memori yang diizinkan dari 33554432 byte habis (mencoba mengalokasikan 43148176 byte) dalam php
Pesan kesalahan ini disajikan, ada saran?
Ukuran memori yang diizinkan dari 33554432 byte habis (mencoba mengalokasikan 43148176 byte) dalam php
Jawaban:
Akhirnya saya menemukan jawabannya:
Cukup tambahkan baris di bawah ini sebelum baris Anda mendapatkan kesalahan dalam file Anda
ini_set('memory_limit', '-1');
Ini akan mengambil penggunaan server memori yang tidak terbatas, itu berfungsi dengan baik.
Terima kasih telah memberikan saran teman.
UNLIMITED
.
Berikut adalah dua metode sederhana untuk meningkatkan batas hosting bersama:
Jika Anda memiliki akses ke file PHP.ini Anda, ubah baris dalam PHP.ini Jika baris Anda menunjukkan 32M coba 64M:
memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)
Jika Anda tidak memiliki akses ke PHP.ini coba tambahkan ini ke file .htaccess:
php_value memory_limit 64M
Script Anda menggunakan terlalu banyak memori. Ini sering dapat terjadi dalam PHP jika Anda memiliki loop yang tidak terkendali dan Anda membuat objek atau menambahkan ke array pada setiap lintasan loop.
Periksa loop tak terbatas.
Jika bukan itu masalahnya, coba dan bantu PHP dengan menghancurkan objek yang Anda selesaikan dengan menyetelnya menjadi nol. misalnya.$OldVar = null;
Periksa kode di mana kesalahan sebenarnya terjadi juga. Apakah Anda berharap saluran itu mengalokasikan sejumlah besar memori? Jika tidak, coba dan cari tahu apa yang salah ...
Melakukan:
ini_set('memory_limit', '-1');
tidak pernah baik. Jika Anda ingin membaca file yang sangat besar, ini adalah praktik terbaik untuk menyalinnya sedikit demi sedikit. Coba kode berikut untuk praktik terbaik.
$path = 'path_to_file_.txt';
$file = fopen($path, 'r');
$len = 1024; // 1MB is reasonable for me. You can choose anything though, but do not make it too big
$output = fread( $file, $len );
while (!feof($file)) {
$output .= fread( $file, $len );
}
fclose($file);
echo 'Output is: ' . $output;
while
loop:fclose($file)
Sayangnya mudah diprogram dalam PHP dengan cara yang menghabiskan memori lebih cepat dari yang Anda sadari. Menyalin string, array dan objek daripada menggunakan referensi akan melakukannya, meskipun PHP 5 seharusnya melakukan ini lebih otomatis daripada di PHP 4. Tetapi berurusan dengan set data Anda secara keseluruhan melalui beberapa langkah juga boros dibandingkan dengan memproses unit logis terkecil. pada suatu waktu. Contoh klasik bekerja dengan hasil yang besar dari database: kebanyakan programmer mengambil seluruh hasil ke dalam array dan kemudian mengulanginya satu atau lebih kali dengan foreach()
. Jauh lebih efisien dalam menggunakan while()
loop untuk mengambil dan memproses satu baris pada satu waktu. Hal yang sama berlaku untuk memproses file.
Jika Anda ingin membaca file besar, Anda harus membacanya sedikit demi sedikit alih-alih membacanya sekaligus.
Ini matematika sederhana: Jika Anda membaca file besar 1 MB sekaligus, maka dibutuhkan setidaknya 1 MB memori pada saat bersamaan untuk menyimpan data.
Jadi, Anda harus membacanya sedikit demi sedikit menggunakan fopen
& fread
.
$fh = fopen($folder.'/'.$filename, "rb") or die(); $buffer = 1024*1024; while (!feof($fh)) { print(fread($fh, $buffer)); flush(); } fclose($fh);
Saya menghadapi masalah yang sama di php7.2 dengan laravel 5.6. Saya hanya menambah jumlah variabel memory_limit = 128M
di php.ini sesuai permintaan aplikasi saya. Mungkin 256M / 512M / 1048M ..... Sekarang berfungsi dengan baik.
Saya juga mengalami masalah yang sama, mencari file phpinfo.ini, php.ini atau .htaccess tidak berhasil. Akhirnya saya melihat beberapa file php, membukanya dan memeriksa kode-kode di dalamnya untuk memori. Akhirnya solusi ini adalah apa yang saya hasilkan dan itu berhasil untuk saya. Saya menggunakan wordpress, jadi solusi ini mungkin hanya berfungsi untuk masalah batas ukuran memori wordpress. Solusi saya, buka file default-constants.php di folder / public_html / wp-include . Buka file itu dengan editor kode, dan temukan pengaturan memori di bawah wp_initial_constants
cakupan, atau cukup Ctrl + F untuk menemukan kata "memori". Di sana Anda akan datang WP_MEMORY_LIMIT
dan WP_MAX_MEMORY_LIMIT
. Tingkatkan saja, itu 64 MB dalam kasus saya, saya meningkatkannya menjadi 128 MB dan kemudian menjadi 200 MB.
// Define memory limits.
if ( ! defined( 'WP_MEMORY_LIMIT' ) ) {
if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) {
define( 'WP_MEMORY_LIMIT', $current_limit );
} elseif ( is_multisite() ) {
define( 'WP_MEMORY_LIMIT', '200M' );
} else {
define( 'WP_MEMORY_LIMIT', '128M' );
}
}
if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) {
if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) {
define( 'WP_MAX_MEMORY_LIMIT', $current_limit );
} elseif ( -1 === $current_limit_int || $current_limit_int > 268435456 /* = 256M */ ) {
define( 'WP_MAX_MEMORY_LIMIT', $current_limit );
} else {
define( 'WP_MAX_MEMORY_LIMIT', '256M' );
}
}
Btw, tolong jangan lakukan kode berikut, karena itu praktik buruk:
ini_set('memory_limit', '-1');
wp-config.php
sebagai gantinya, di mana mereka tidak akan ditimpa oleh pembaruan WordPress di masa mendatang. Juga, beberapa plugin keamanan (seperti WordFence, misalnya) akan mengeluh jika file WordPress 'inti' diubah ...
wp-config.php
dan menambahkan dua baris di sana (i. E. define( 'WP_MEMORY_LIMIT', '200M' );
Dan define( 'WP_MAX_MEMORY_LIMIT', '256M' );
. Tidak seperti file pada 'core' WP (yaitu, semuanya di bawah wp-includes
), yang akan ditimpa oleh upgrade WP, wp-config.php
tidak akan - itu ada di sana persis untuk tujuan yang tepat untuk mengesampingkan konstanta WP!
-1
baik untuk proses jangka pendek. Misalnya wadah pembangun php yang digunakan untuk menjalankan pengujian unit atau pemasangan komposer / dll. Hanya saja, jangan menjalankan situs produksi Anda dengan itu diatur seperti itu.
Anda dapat meningkatkan memori yang diizinkan untuk skrip php dengan mengeksekusi baris berikut di atas semua kode dalam skrip:
ini_set('memory_limit','-1'); // enabled the full memory available.
Dan juga de mengalokasikan variabel yang tidak diinginkan dalam skrip.
Periksa perpustakaan php ini: Membebaskan memori dengan PHP
Saya perhatikan banyak jawaban hanya mencoba untuk meningkatkan jumlah memori yang diberikan ke skrip yang memiliki tempat tetapi lebih sering itu berarti bahwa ada sesuatu yang terlalu liberal dengan memori karena jumlah volume atau ukuran yang tidak terduga. Jelas jika Anda bukan penulis skrip Anda atas belas kasihan penulis kecuali jika Anda merasa ambisius :) PHP docs bahkan mengatakan masalah memori disebabkan oleh " skrip yang ditulis dengan buruk "
Harus disebutkan bahwa ini_set('memory_limit', '-1');
(tanpa batas) dapat menyebabkan ketidakstabilan server 0 bytes free = bad things
. Alih-alih, temukan keseimbangan yang masuk akal dengan apa yang coba dilakukan skrip Anda dan jumlah memori yang tersedia pada mesin.
Pendekatan yang lebih baik: Jika Anda adalah penulis skrip (atau ambisius), Anda dapat men-debug masalah memori tersebut dengan xdebug . Versi terbaru (2.6.0 - dirilis 2018-01-29) mengembalikan profil memori yang menunjukkan kepada Anda apa panggilan fungsi yang menghabiskan banyak memori. Itu memperlihatkan masalah dalam skrip yang sulit ditemukan. Biasanya, inefisiensi berada dalam satu lingkaran yang tidak mengharapkan volume yang diterimanya, tetapi setiap kasus akan dibiarkan sebagai latihan untuk pembaca :)
The dokumentasi Xdebug membantu, tapi itu bermuara pada 3 langkah:
apt-get
dan yum
lain - lainxdebug.profiler_enable = 1
,xdebug.profiler_output_dir = /where/ever/
Jika Anda mencoba membaca file, itu akan memakan memori dalam PHP. Misalnya, jika Anda mencoba membuka dan membaca file MP3 (seperti, katakanlah, $ data = file (" http://mydomain.com/path/sample.mp3 ") itu akan menarik semuanya ke dalam memori .
Seperti yang disarankan Nelson, Anda dapat bekerja untuk meningkatkan batas memori maksimum jika Anda benar-benar perlu menggunakan memori sebanyak ini.
Kami memiliki situasi yang serupa dan kami mencoba memberikan di bagian atas jawaban ini_set ('memory_limit', '-1'); dan semuanya bekerja dengan baik, file gambar terkompresi lebih besar dari 1MB ke KB.
Jika Anda menggunakan hosting bersama, Anda tidak akan dapat memaksakan kenaikan dalam batas ukuran php.
Cukup buka cpanel Anda dan tingkatkan versi php Anda ke 7.1 dan di atasnya maka Anda bisa melanjutkan.
pengguna wordpress menambahkan baris:
@ini_set('memory_limit', '-1');
di wp-settings.php yang dapat Anda temukan di folder root diinstal wordpress
Saya memiliki masalah yang sama dengan menjalankan php pada command line. Baru-baru ini, saya mengubah file php.ini dan melakukan kesalahan saat mengganti php.ini
Ini untuk php7.0
jalur ke php.ini tempat saya melakukan kesalahan:
/etc/php/7.0/cli/php.ini
Saya telah menetapkan memory_limit = 256
(yang berarti 256 bytes
)
alih-alih memory_limit = 256M
(yang berarti 256 Mega bytes
).
; Jumlah maksimum memori yang dapat dikonsumsi oleh sebuah skrip (128MB)
; http://php.net/memory-limit
memory_limit = 128M
Setelah saya memperbaikinya, proses saya mulai berjalan dengan baik.
Jalankan perintah ini di direktori root Magento Anda php -d memory_limit=4G bin/magento
jika Anda menggunakan laravel maka gunakan cara ini
public function getClientsListApi(Request $request){
print_r($request->all()); //for all request
print_r($request->name); //for all name
}
dari pada
public function getClientsListApi(Request $request){
print_r($request); // it show error as above mention
}