Допустимый размер памяти 33554432 байт исчерпан (пытался выделить 43148176 байт) в php

Это сообщение об ошибке представлено, любые предложения?

Допустимый размер памяти 33554432 байт исчерпан (пытался выделить 43148176 байт) в php

Наконец я нашел ответ:

Просто добавьте эту строку ниже до того, как вы получите ошибку в вашем файле

ini_set('memory_limit', '-1');

Он будет использовать неограниченное использование памяти сервером, он работает нормально.

Спасибо, что предложили друзьям.

Вот два простых способа увеличить лимит на общем хостинге:

  1. Если у вас есть доступ к вашему файлу PHP.ini, измените строку в PHP.ini. Если ваша строка показывает 32M, попробуйте 64M: memory_limit = 64M ; Maximum amount of memory a script may consume (64MB) memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)

  2. Если у вас нет доступа к PHP.ini, попробуйте добавить его в файл .htaccess: php_value memory_limit 64M

В вашем скрипте слишком много памяти. Это может часто возникать в PHP, если у вас есть цикл, который закончился из-за контроля, и вы создаете объекты или добавляете массивы на каждом проходе цикла.

Проверьте наличие бесконечных циклов.

Если это не проблема, попробуйте и помогите PHP, уничтожив объекты, которые вы закончили, установив их в null. например. $OldVar = null;

Проверьте код, где происходит ошибка. Вы ожидаете, что эта линия будет выделять массивный объем памяти? Если нет, попытайтесь выяснить, что пошло не так …

Выполнение:

 ini_set('memory_limit', '-1'); 

никогда не бывает хорошим. Если вы хотите прочитать очень большой файл, лучше всего скопировать его по частям. Попробуйте следующий код для лучшей практики.

 $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; 

К сожалению, легко программировать на PHP таким образом, который потребляет память быстрее, чем вы понимаете. Копирование строк, массивов и объектов вместо использования ссылок сделает это, хотя PHP 5 должен делать это более автоматически, чем в PHP 4. Но обработка вашего набора данных целиком на несколько этапов также расточительна по сравнению с обработкой наименьшего логического блока вовремя. Классический пример – работа с большими наборами результатов из базы данных: большинство программистов извлекают весь набор результатов в массив и затем чередуют его один или несколько раз с помощью foreach() . Гораздо эффективнее использовать цикл while() для извлечения и обработки одной строки за раз. То же самое относится к обработке файла.

Если вы хотите читать большие файлы, вы должны читать их пополам, а не читать их сразу.
Это простая математика: если вы одновременно читаете крупный файл размером 1 МБ, необходимо одновременно хранить не менее 1 МБ памяти для хранения данных.

Поэтому вы должны читать их по fopen используя fopen & fread .

Вы можете увеличить память, разрешенную для скрипта php, выполнив следующую строку над всеми кодами сценария:

 ini_set('memory_limit','-1'); // enabled the full memory available. 

А также выделить ненужные переменные в скрипте.

Проверьте эту библиотеку php: освобождение памяти с помощью PHP

У меня также была такая же проблема, я искал файлы phpinfo.ini, php.ini или .htaccess безрезультатно. Наконец, я просмотрел некоторые php-файлы, открыл их и проверил коды внутри для памяти. Наконец, это решение было тем, с чем я пришел, и это сработало для меня. Я использовал wordpress, поэтому это решение может работать только для ограничения размера памяти WordPress. Мое решение, откройте файл default-constants.php в папке / public_html / wp-includes . Откройте этот файл с помощью редактора кода и найдите параметры памяти в области wp_initial_constants или просто Ctrl + F, чтобы найти слово «память». Там вы перейдете через WP_MEMORY_LIMIT и WP_MAX_MEMORY_LIMIT . Просто увеличьте его, это было 64 МБ в моем случае, я увеличил его до 128 МБ, а затем до 200 МБ.

 // 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, пожалуйста, не делайте следующий код, потому что это плохая практика:

 ini_set('memory_limit', '-1'); 

У нас была аналогичная ситуация, и мы опробовали данные в верхней части ответов ini_set ('memory_limit', '-1'); и все работало отлично, сжатые файлы изображений размером более 1 МБ в КБ.

пользователи wordpress добавляют строку:

@ini_set('memory_limit', '-1');

в wp-settings.php, который вы можете найти в установленной в wordpress корневой папке

Если вы пытаетесь прочитать файл, это займет память в PHP. Например, если вы пытаетесь открыть и прочитать файл MP3 (например, $ data = file (« http://mydomain.com/path/sample.mp3 »), он все равно потянет в память ,

Как предлагает Нельсон, вы можете работать, чтобы увеличить максимальный предел памяти, если вам действительно нужно использовать эту большую память.

Написать

ini_set('memory_limit', '-1');

в вашем index.php вверху после открытия тега php

Я не обновил свой хостинг, и база данных была доступна только для чтения. Joomla нужно было написать сеанс и не мог этого сделать.