Это сообщение об ошибке представляется, какие-либо предложения?
Разрешенный объем памяти 33554432 байт исчерпан (попытался выделить 43148176 байт) в php
php
memory-management
memory-limit
panidarapu
источник
источник
Ответы:
Наконец я нашел ответ:
Просто добавьте эту строку ниже перед строкой, когда вы получаете сообщение об ошибке в вашем файле.
ini_set('memory_limit', '-1');
Это займет неограниченное использование памяти сервера, работает нормально.
Спасибо за предложение друзей.
источник
UNLIMITED
.Вот два простых способа увеличить лимит на виртуальный хостинг:
Если у вас есть доступ к файлу PHP.ini, измените строку в PHP.ini. Если ваша строка показывает 32M, попробуйте 64M:
memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)
Если у вас нет доступа к PHP.ini, попробуйте добавить это в файл .htaccess:
php_value memory_limit 64M
источник
Ваш скрипт использует слишком много памяти. Это часто может происходить в PHP, если у вас есть цикл, который вышел из-под контроля, и вы создаете объекты или добавляете в массивы на каждом проходе цикла.
Проверьте на бесконечные петли.
Если это не проблема, попробуйте помочь PHP, уничтожив объекты, с которыми вы покончили, установив их в null. например.
$OldVar = null;
Проверьте код, где на самом деле происходит ошибка. Вы ожидаете, что эта строка будет выделять огромное количество памяти? Если нет, попробуйте выяснить, что пошло не так ...
источник
Делать:
никогда не бывает хорошо Если вы хотите прочитать очень большой файл, рекомендуется копировать его постепенно. Попробуйте следующий код для лучшей практики.
источник
while
цикла:fclose($file)
К сожалению, в PHP легко программировать так, что он потребляет память быстрее, чем вы думаете. Копирование строк, массивов и объектов вместо использования ссылок сделает это, хотя PHP 5 должен делать это более автоматически, чем в PHP 4. Но работа с вашим набором данных за несколько шагов также расточительна по сравнению с обработкой наименьшей логической единицы вовремя. Классический пример - работа с большими наборами результатов из базы данных: большинство программистов извлекают весь набор результатов в массив и затем зацикливают его один или несколько раз
foreach()
. Намного более эффективно использоватьwhile()
цикл для извлечения и обработки по одной строке за раз. То же самое относится и к обработке файла.источник
Если вы хотите читать большие файлы, вы должны читать их постепенно, а не читать сразу.
Это простая математика: если вы читаете файл размером 1 МБ за один раз, то для хранения данных требуется как минимум 1 МБ памяти.
Поэтому вы должны читать их постепенно, используя
fopen
&fread
.источник
$fh = fopen($folder.'/'.$filename, "rb") or die(); $buffer = 1024*1024; while (!feof($fh)) { print(fread($fh, $buffer)); flush(); } fclose($fh);
Я столкнулся с той же проблемой в php7.2 с laravel 5.6. Я просто увеличиваю количество переменных
memory_limit = 128M
в php.ini, как того требуют мои приложения. Это может быть 256M / 512M / 1048M ..... Теперь все работает нормально.источник
У меня тоже была такая же проблема, я искал файлы 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 МБ.Кстати, пожалуйста, не делайте следующий код, потому что это плохая практика:
источник
wp-config.php
вместо этого вы можете очень легко добавить эти ограничения , где они не будут перезаписаны будущими обновлениями WordPress. Кроме того, несколько плагинов безопасности (например, WordFence) будут жаловаться, если «основные» файлы WordPress изменены ...wp-config.php
. И добавить две строки (я .edefine( 'WP_MEMORY_LIMIT', '200M' );
иdefine( 'WP_MAX_MEMORY_LIMIT', '256M' );
. В отличие от файлов на «основной» WP (а именно, все подwp-includes
), которые будут перезаписаны обновления WP,wp-config.php
не будет - это есть именно для Точная цель переопределения констант WP!-1
хорошо для коротких процессов. Например, контейнер компоновщика php, который используется для запуска модульных тестов или для компоновщика / etc. Только не запускайте свою производственную площадку с такой настройкой.Вы можете увеличить объем памяти, разрешенный PHP-скрипту, выполнив следующую строку над всеми кодами в скрипте:
А также де выделить нежелательные переменные в сценарии.
Проверьте эту библиотеку php: освобождение памяти с помощью PHP
источник
источник
Я заметил, что многие ответы просто пытаются увеличить объем памяти, выделяемый скрипту, который имеет свое место, но чаще всего это означает, что что-то слишком либерально с памятью из-за непредвиденного объема или размера. Очевидно, что если вы не являетесь автором сценария, то это зависит от автора, если только вы не амбициозны :) Документы PHP даже говорят, что проблемы с памятью связаны с " плохо написанными сценариями ".
Следует отметить, что
ini_set('memory_limit', '-1');
(без ограничений) может вызвать нестабильность сервера, как0 bytes free = bad things
. Вместо этого найдите разумный баланс между тем, что пытается сделать ваш скрипт, и объемом доступной памяти на машине.Лучший подход: если вы автор сценария (или амбициозный), вы можете отладить такие проблемы с памятью с помощью xdebug . Последняя версия (2.6.0 - выпущена 2018-01-29) вернула профилирование памяти, которое показывает, какие вызовы функций занимают большие объемы памяти. В скрипте выявляются проблемы, которые иначе трудно найти. Как правило, недостатки заключаются в цикле, который не ожидает объем, который он получает, но каждый случай будет оставлен читателю в качестве упражнения :)
Документация по xdebug полезна, но сводится к 3 шагам:
apt-get
иyum
т. Д.xdebug.profiler_enable = 1
,xdebug.profiler_output_dir = /where/ever/
источник
Если вы пытаетесь прочитать файл, это займет память в PHP. Например, если вы пытаетесь открыть и прочитать файл MP3 (например, $ data = file (" http://mydomain.com/path/sample.mp3 "), он собирается вытянуть все это в память ,
Как предполагает Нельсон, вы можете увеличить максимальный лимит памяти, если вам действительно нужно использовать столько памяти.
источник
У нас была похожая ситуация, и мы опробовали данные в верхней части ответов ini_set ('memory_limit', '-1'); и все работало нормально, сжатые файлы изображений размером более 1 МБ в КБ.
источник
Напишите
ini_set('memory_limit', '-1');
в вашем index.php вверху после открытия тега php
источник
Я получил то же сообщение об ошибке после перехода на новую тему в Wordpress. PHP работал под управлением версии 5.3, поэтому я перешел на 7.2. Это решило проблему.
источник
Если вы используете общий хостинг, вы не сможете принудительно увеличить ограничение размера php.
Просто зайдите на свою cpanel и обновите свою версию php до 7.1 и выше, и тогда все готово.
источник
пользователи WordPress добавляют строку:
@ini_set('memory_limit', '-1');
в wp-settings.php, который вы можете найти в установленной корневой папке WordPress
источник
Я не обновил свой хостинг, и база данных была доступна только для чтения. Joomla нужно было написать сессию и не смог этого сделать.
источник
У меня была та же проблема, что запуск PHP в командной строке. Недавно я изменил файл php.ini и сделал ошибку при изменении php.ini
Это для php7.0
Я установил
memory_limit = 256
(что означает256 bytes
)вместо
memory_limit = 256M
(что означает256 Mega bytes
).Как только я исправил это, мой процесс начал работать нормально.
источник
Запустите эту команду в корневом каталоге Magento.
php -d memory_limit=4G bin/magento
источник
если вы используете Laravel, то используйте эти способы
public function getClientsListApi(Request $request){ print_r($request->all()); //for all request print_r($request->name); //for all name }
вместо того
public function getClientsListApi(Request $request){ print_r($request); // it show error as above mention }
источник