Меню

Неустранимая ошибка разрешенный объем памяти 134217728 байт исчерпан

Похоже, вы выделили больше памяти, чем позволяет PHP . Измените параметр memory_limit настройках php.ini вашего сайта, как описано на связанной странице.

Другая вероятность (менее вероятно) заключается в том, что вы нажмете ограничения ресурсов setrlimit(2) для своего пользователя или группы. Проверьте /etc/security/limits.conf на лимиты, которые могут быть установлены для вашего веб-сервера, а также любые сценарии инициализации, запускающие среду вашего сервера и среду интерпретатора PHP.

Первый пример, который я нашел путем поиска SO для «PHP out of memory», – это

Попробуйте использовать echo вместо того, чтобы сначала хранить то, что вы печатаете в переменной.

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

Глядя на файл, в котором произошла фатальная dbo_mysql.php ( dbo_mysql.php ), я полагаю, что ваш вызов извлекает данные из dbo_mysql.php данных.

Кроме того, глядя на ограничение памяти, он отображает 134217728 байт, что составляет 128 МБ, поэтому я думаю, что независимо от того, что делает ваш вызов API, он пытается извлечь много данных, которые превышают лимит, выделенный для каждого скрипта.
Например, если последний скрипт в стеке вызовов API должен был использовать 20MB для своих нужд, а затем использовать шины для извлечения данных из БД стоимостью 115MB , ваш скрипт будет пытаться выделить 7MB что на 7 7MB больше предела и, таким образом, вызывает Fatal Exception .

Итак, я вижу несколько вещей, чтобы проверить / сделать:

  1. Чтобы вы не извлекали ненужные данные или, другими словами, извлекали только то, что вам нужно.
  2. Если вам действительно нужны все эти данные, тогда
    • memory_limit значение memory_limit в файле php.ini
      Con: Если ваши данные продолжают расти, возможно, вам придется обновлять это значение только для одного сценария и подвергать себя «я» утечке памяти или нехватке памяти.
    • Или я бы рекомендовал вам реализовать какую-то разбивку на страницы (что позволит вам контролировать ограничения памяти) и сделать ваше приложение более масштабируемым.

When I login to my web application it shows an error like:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 87 bytes) in /gt/2.ps.fo/home/hft/domains/console.fo.spalgo.com/public_html/cake/libs/model/datasources/dbo/dbo_mysql.php on line 775

Is there any solution to solve this problem? Why do I get this error?

sarnold's user avatar

sarnold

101k21 gold badges178 silver badges232 bronze badges

asked Jul 2, 2011 at 4:54

Souvick Dey's user avatar

1

That sounds like you’ve allocated more memory than PHP will allow. Edit the memory_limit setting in your site php.ini configuration as described on the linked page.

Another possibility (less likely) is that you’ve hit the setrlimit(2) resource limits for your user or group. Check /etc/security/limits.conf for limits that might be set for your web server, along with whatever initialization scripts start your server environment and PHP interpreter environment.

answered Jul 2, 2011 at 5:07

sarnold's user avatar

sarnoldsarnold

101k21 gold badges178 silver badges232 bronze badges

1

The first example I found by searching SO for «PHP out of memory» is this one

Community's user avatar

answered Jul 2, 2011 at 5:06

pavium's user avatar

paviumpavium

14.6k4 gold badges32 silver badges48 bronze badges

Try using echo instead of storing what you are printing to a variable first.

answered Jul 2, 2011 at 7:08

Explosion Pills's user avatar

Explosion PillsExplosion Pills

186k51 gold badges322 silver badges397 bronze badges

Looking at the file that threw the fatal exception (dbo_mysql.php) I presume that your call is retrieving data from the DataBase.

Also, looking at the memory limit, it shows 134217728 bytes, which is 128MB, so I think that whatever your API call is doing, is trying to fetch a lot of data which total surpasses the limit allocated per script.
For example, if the last script in the API call stack were to use 20MB for its needs and then tires to fetch data from the DB worth 115MB, your script would be trying to allocate 135MB which is already 7MB more than the limit and thus causing the Fatal Exception.

So, I see a few things to check/do:

  1. That you are not retrieving unnecessary data, or in other words, retrieve only what you need.
  2. If you indeed need all that data, then
    • Either increase the memory_limit value under your php.ini file
      Con: If your data keeps growing, you may need to keep updating this value for the only one script and exposing your self to memory leaks or running out of memory.
    • Or I would recommend that you implement some sort of pagination (which will allow you to keep memory limits in check) and make your application more scalable.

answered Mar 14, 2017 at 19:51

AlphaZygma's user avatar

AlphaZygmaAlphaZygma

2182 silver badges9 bronze badges

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

Yu Hao's user avatar

Yu Hao

118k44 gold badges232 silver badges287 bronze badges

answered Jul 12, 2013 at 6:42

user2575350's user avatar

1

When I login to my web application it shows an error like:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 87 bytes) in /gt/2.ps.fo/home/hft/domains/console.fo.spalgo.com/public_html/cake/libs/model/datasources/dbo/dbo_mysql.php on line 775

Is there any solution to solve this problem? Why do I get this error?

sarnold's user avatar

sarnold

101k21 gold badges178 silver badges232 bronze badges

asked Jul 2, 2011 at 4:54

Souvick Dey's user avatar

1

That sounds like you’ve allocated more memory than PHP will allow. Edit the memory_limit setting in your site php.ini configuration as described on the linked page.

Another possibility (less likely) is that you’ve hit the setrlimit(2) resource limits for your user or group. Check /etc/security/limits.conf for limits that might be set for your web server, along with whatever initialization scripts start your server environment and PHP interpreter environment.

answered Jul 2, 2011 at 5:07

sarnold's user avatar

sarnoldsarnold

101k21 gold badges178 silver badges232 bronze badges

1

The first example I found by searching SO for «PHP out of memory» is this one

Community's user avatar

answered Jul 2, 2011 at 5:06

pavium's user avatar

paviumpavium

14.6k4 gold badges32 silver badges48 bronze badges

Try using echo instead of storing what you are printing to a variable first.

answered Jul 2, 2011 at 7:08

Explosion Pills's user avatar

Explosion PillsExplosion Pills

186k51 gold badges322 silver badges397 bronze badges

Looking at the file that threw the fatal exception (dbo_mysql.php) I presume that your call is retrieving data from the DataBase.

Also, looking at the memory limit, it shows 134217728 bytes, which is 128MB, so I think that whatever your API call is doing, is trying to fetch a lot of data which total surpasses the limit allocated per script.
For example, if the last script in the API call stack were to use 20MB for its needs and then tires to fetch data from the DB worth 115MB, your script would be trying to allocate 135MB which is already 7MB more than the limit and thus causing the Fatal Exception.

So, I see a few things to check/do:

  1. That you are not retrieving unnecessary data, or in other words, retrieve only what you need.
  2. If you indeed need all that data, then
    • Either increase the memory_limit value under your php.ini file
      Con: If your data keeps growing, you may need to keep updating this value for the only one script and exposing your self to memory leaks or running out of memory.
    • Or I would recommend that you implement some sort of pagination (which will allow you to keep memory limits in check) and make your application more scalable.

answered Mar 14, 2017 at 19:51

AlphaZygma's user avatar

AlphaZygmaAlphaZygma

2182 silver badges9 bronze badges

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

Yu Hao's user avatar

Yu Hao

118k44 gold badges232 silver badges287 bronze badges

answered Jul 12, 2013 at 6:42

user2575350's user avatar

1

this error is driving my crazy and i’ve been searching the web and haven’t been able to solve the problem even though i thought this was a pretty common error. I also found numerous posts addressing that error. Unfortunately nothing worked for me. I’m using a MySQL-Database and created a largeblob field where I want to store images. Everytime I try to upload a picture i get the following error

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 47235072 bytes) in C:xamppphpMyAdminlibrariesError.class.php on line 173

I already changed the upload_max_filesize and post_max_size in php.ini. I also tried adding

define('WP_MEMORY_LIMIT', '32M')

in various page_setting*.php sites. Nothing worked. I’d be very happy if someone could help me as I’m absolutely out of ideas. Thanks in advance and

Greetings Chris

asked Jan 9, 2016 at 8:24

relief.melone's user avatar

relief.melonerelief.melone

2,8621 gold badge26 silver badges54 bronze badges

8

Try the following:

ini_set("memory_limit","64M");

Probably 32M is not enough for your script to process the image.

Also, note that WP_MEMORY_LIMIT constant will work only if you have WordPress installed. The setting above is related to PHP itself.

answered Jan 9, 2016 at 8:47

Kristian Vitozev's user avatar

Kristian VitozevKristian Vitozev

5,7116 gold badges34 silver badges54 bronze badges

5

this error is driving my crazy and i’ve been searching the web and haven’t been able to solve the problem even though i thought this was a pretty common error. I also found numerous posts addressing that error. Unfortunately nothing worked for me. I’m using a MySQL-Database and created a largeblob field where I want to store images. Everytime I try to upload a picture i get the following error

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 47235072 bytes) in C:xamppphpMyAdminlibrariesError.class.php on line 173

I already changed the upload_max_filesize and post_max_size in php.ini. I also tried adding

define('WP_MEMORY_LIMIT', '32M')

in various page_setting*.php sites. Nothing worked. I’d be very happy if someone could help me as I’m absolutely out of ideas. Thanks in advance and

Greetings Chris

asked Jan 9, 2016 at 8:24

relief.melone's user avatar

relief.melonerelief.melone

2,8621 gold badge26 silver badges54 bronze badges

8

Try the following:

ini_set("memory_limit","64M");

Probably 32M is not enough for your script to process the image.

Also, note that WP_MEMORY_LIMIT constant will work only if you have WordPress installed. The setting above is related to PHP itself.

answered Jan 9, 2016 at 8:47

Kristian Vitozev's user avatar

Kristian VitozevKristian Vitozev

5,7116 gold badges34 silver badges54 bronze badges

5

Я пытаюсь избежать исчерпанной памяти фатальной ошибки, выясняя, произойдет ли это до того, как это произойдет. Несмотря на то, что моя установка PHP имеет ограничение mem 128M, разрешенный размер составляет 134217728 байт; Я предполагаю, что PHP дает некоторый запас здесь, который учитывает дополнительные байты. В любом случае мой фактический размер файла, который я пытаюсь прочитать, составляет 134171737, что меньше 134217728. Однако PHP говорит, что попытался выделить 134179929.

Эти цифры кажутся произвольными. Как я могу проверить, исчерпает ли чтение файла переменную память (если сравнить, т.е. mem_size > file_size) эти цифры на самом деле не точны?

Неустранимая ошибка: допустимый объем памяти 134217728 байт исчерпан (попытался выделить 134179929 байт) в C: xampp htdocs backup vendor cake File.php в строке 159

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

0

Решение

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

Даже с очень низкоуровневыми языками (которыми, конечно, не является PHP), вам понадобится не только память для байтов, которые вы выделяете (которые будут помещаться в пространство кучи), но и память для инструкций и вызова стек.

По мере того как вы переходите на языки более высокого уровня и интерпретируемые языки, эти накладные расходы только увеличиваются — интерпретатору понадобится собственный объем памяти, и, возможно, не будет никакого хорошего или надежного способа (будь то между версиями или даже между конфигурациями одной и той же версии или выполнение в той же конфигурации), чтобы точно определить, сколько «дополнения» потребуется для среды / среды выполнения.

В вашем случае вы уже подозреваете, что можете приблизиться — вы должны выбрать «безопасный» объем буферного пространства, чтобы оставить его на время выполнения, например, если вы знаете, что собираетесь попытаться выделить более 90% доступной памяти для среды выполнения, которую вы не должны (и для языка, такого как PHP, где вы, скорее всего, работаете в серверной среде, где другие потребители конкурируют за одни и те же ресурсы, этот порог, вероятно, должен быть намного ниже).

В целом, рекомендуется избегать использования большего количества памяти, чем необходимо, особенно в интерпретируемой и сетевой средах. Хотя компромиссы памяти могут стоить того, чтобы сократить время выполнения (особенно при загрузке большего количества данных в память, вы сэкономите время на большом количестве повторных вычислений, которые потребуют больше времени для повторного выделения памяти, а затем освобождают память только для ее перераспределения), случай, о котором вы говорите, не имеет для этого никакого смысла. По этой причине вы предпочитаете потоковую модель, в которой вы выделяете столько памяти, сколько необходимо для чтения той части файла, которую вы можете обоснованно обслуживать (в отличие от ситуации, когда вам приходится многократно обрабатывать разные части этого файла). и затем повторно обработать некоторые их части на основе того, что вы только что обработали — например, подпрограмму, которая должна часто возвращаться в файл, чтобы знать, что делать дальше).

0

Другие решения

Других решений пока нет …

У меня есть куча систем клиентской точки продажи (POS), которые периодически отправляют новые данные о продажах в одну централизованную базу данных, которая хранит данные в одной большой базе данных для генерации отчетов.

Клиентский POS основан на PHPPOS, и я внедрил модуль, который использует стандартную библиотеку XML-RPC для отправки данных о продажах в службу. Серверная система построена на CodeIgniter и использует библиотеки XML-RPC и XML-RPCS для компонента webservice. Всякий раз, когда я отправляю много данных о продажах (всего лишь 50 строк из таблицы продаж и отдельных строк из sales_items, относящихся к каждому элементу в продаже), я получаю следующую ошибку:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 54 bytes)

128M — значение по умолчанию в php.ini, но я предполагаю, что это огромное количество сломать. На самом деле, я даже попытался установить это значение на 1024 М, и все, что он делает, занимает больше времени для выхода из системы.

Что касается шагов, которые я предпринял, я попытался отключить всю обработку на стороне сервера и сфальсифицировал его, чтобы возвращать консервированный ответ независимо от ввода. Однако я считаю, что проблема заключается в фактической отправке данных. Я даже попытался отключить максимальное время выполнения script для PHP, и он все еще не работает.

18 фев. 2009, в 12:12

Поделиться

Источник

25 ответов

Изменение memory_limit помощью ini_set('memory_limit', '-1'); это не правильное решение. Пожалуйста, не делай этого.

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

Вероятно, вам следует попытаться отследить код в вашем коде и исправить его.

Jeff
06 сен. 2013, в 14:46

Поделиться

ini_set('memory_limit', '-1'); отменяет установленный по умолчанию предел памяти PHP.

Chris Lane
25 окт. 2011, в 20:49

Поделиться

Правильный способ — отредактировать файл php.ini.
Измените memory_limit на ваше значение желания.

Как и в случае с вашим вопросом, предел 128M (который является лимитом по умолчанию) превышен, поэтому в вашем коде есть что-то серьезное, так как это не должно сильно занять.

Если вы знаете, почему это так много, и вы хотите разрешить ему устанавливать memory_limit = 512M или выше, и вам должно быть хорошо.

Basav
21 март 2013, в 09:16

Поделиться

Выделение памяти для PHP может быть отрегулировано постоянно или временно.

Постоянно

Вы можете навсегда изменить распределение памяти PHP двумя способами.

Если у вас есть доступ к вашему файлу php.ini, вы можете отредактировать значение memory_limit по своему желаемому значению.

Если у вас нет доступа к вашему файлу php.ini (и ваш веб-хост его разрешает), вы можете переопределить выделение памяти через ваш файл .htaccess. Добавьте php_value memory_limit 128M (или любое другое ваше выделение).

Временный

Вы можете настроить распределение памяти на лету из PHP файла. У вас просто есть код ini_set('memory_limit', '128M'); (или любое другое ваше выделение). Вы можете удалить ограничение памяти (хотя ограничения на использование машины или экземпляра могут все еще применяться), установив значение в «-1».

Umair Idrees
09 март 2014, в 15:13

Поделиться

Очень легко получить утечки памяти в PHP script — особенно если вы используете абстракцию, такую ​​как ORM. Попробуйте использовать Xdebug для профилирования вашего script и узнайте, куда пошла память.

troelskn
18 фев. 2009, в 14:42

Поделиться

Добавляя 22,5 миллиона записей в массив с помощью array_push, я продолжал получать фатальные ошибки «исчерпана память» — около 20 миллионов записей, используя 4G в качестве предела памяти в php.ini. Чтобы исправить это я добавил выражение

$old = ini_set('memory_limit', '8192M'); 

в верхней части файла. Теперь все работает нормально. Я не знаю, есть ли у php утечка памяти, это не моя работа, и мне все равно. Я просто должен сделать свою работу, и это сработало.

Программа очень проста:

$fh = fopen($myfile);
while (!feof($fh)) {
      array_push($file, stripslashes(fgets($fh)));
}  
fclose($fh);

Неустранимая ошибка указывает на строку 3, пока я не увеличил предел памяти, что устранило ошибку.

JamesAD-0
28 июнь 2015, в 06:03

Поделиться

Я продолжал получать эту ошибку, даже когда memory_limit установлен в php.ini, и значение правильно phpinfo() с помощью phpinfo().

Изменяя это от этого:

memory_limit=4G

К этому:

memory_limit=4096M

Это исправило проблему в PHP 7.

Danny Beckett
13 март 2017, в 12:29

Поделиться

Когда вы видите вышеупомянутую ошибку, особенно если значение (tried to allocate __ bytes) является низким значением, это может быть индикатор бесконечного цикла, как функция, которая сама вызывает вызов:

function exhaustYourBytes()
{
    return exhaustYourBytes();
}

Kristen Waite
08 май 2015, в 21:55

Поделиться

После включения этих двух строк.
Он начал работать

; Determines the size of the realpath cache to be used by PHP. This value should
; be increased on systems where PHP opens many files to reflect the quantity of
; the file operations performed.
; http://php.net/realpath-cache-size
realpath_cache_size = 16k

; Duration of time, in seconds for which to cache realpath information for a given
; file or directory. For systems with rarely changing files, consider increasing this
; value.
; http://php.net/realpath-cache-ttl
realpath_cache_ttl = 120

Изображение 737

Prem Kumar Maurya
05 дек. 2013, в 07:56

Поделиться

Вы можете исправить это, изменив memory_limit на fastcgi/fpm

$vim /etc/php5/fpm/php.ini

Изменить память, например, с 128 по 512, ниже

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128M

к

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 512M

Derick Fynn
22 апр. 2015, в 14:30

Поделиться

Корневой каталог вашего сайта:

ini_set('memory_limit', '1024M');

Gaurang P
22 янв. 2015, в 13:06

Поделиться

В Drupal 7 вы можете изменить ограничение памяти в файле settings.php, расположенном в папке/папке по умолчанию. В строке 260 вы увидите следующее:

ini_set('memory_limit', '128M');

Даже если ваши настройки php.ini достаточно высоки, вы не сможете потреблять более 128 МБ, если это не задано в файле настроек Drupal settings.php.

LK7889
25 фев. 2013, в 19:32

Поделиться

Вместо изменения значения memory_limit в вашем файле php.ini, если в вашем коде есть часть, которая может использовать много памяти, вы можете удалить memory_limit до memory_limit этого раздела, а затем заменить его после.

$limit = ini_get('memory_limit');
ini_set('memory_limit', -1);
// ... do heavy stuff
ini_set('memory_limit', $limit);

mykeels
07 фев. 2018, в 12:47

Поделиться

Для пользователей Drupal этот ответ Криса Лейна:

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

работает, но мы должны поставить его сразу после открытия

<?php

в файле index.php в корневом каталоге вашего сайта.

sigmapi13
06 дек. 2012, в 18:28

Поделиться

CRASH страница? Изображение 738

(Это происходит, когда MySQL должен запрашивать большие строки, по умолчанию для momory_limit установлено значение small, что было более безопасно для оборудования)

Вы можете проверить состояние вашей системы в существующей памяти, прежде чем увеличивать php.ini

# free -m
             total       used       free     shared    buffers     cached
Mem:         64457      63791        666          0       1118      18273
-/+ buffers/cache:      44398      20058
Swap:         1021          0       1021

Здесь я увеличил его следующим образом, а затем service httpd restart чтобы исправить проблему с CRASH-страницей.

# grep memory_limit /etc/php.ini
memory_limit = 512M

YumYumYum
29 дек. 2016, в 14:44

Поделиться

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

Например, прокси-класс, который имеет одно и то же имя для функции объекта, который будет проксировать его.

class Proxy {

    private $actualObject;

    public function doSomething() {

        return $this->actualObjec->doSomething();
    }
}   

Иногда вы можете забыть принести этот маленький член actualObjec, и поскольку у Proxy действительно есть метод doSomething, PHP не даст вам никаких ошибок и для большого класса, он может быть скрыт от глаз на пару минут до узнайте, почему он просачивает память.

madz
12 июль 2015, в 22:23

Поделиться

PHP 5.3+ позволяет вам изменить ограничение памяти, поместив файл .user.ini в папку public_html.
Просто создайте указанный выше файл и введите в него следующую строку:

memory_limit = 64M

Некоторые хосты cPanel принимают этот метод только.

Sabi
15 окт. 2013, в 14:52

Поделиться

Измените ограничение памяти из файла php.ini и перезапустите apache. После перезапуска запустите phpinfo(); функция из любого php файла для подтверждения изменения memory_limit.

memory_limit = -1

ограничение памяти -1 означает, что ограничение памяти не установлено, теперь оно максимально.

Hasib Kamal
26 июнь 2018, в 06:57

Поделиться

У меня была ошибка ниже при работе на наборе данных меньше, чем раньше.

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4096 bytes) in C:\workspaceimage_management.php on line 173

Поскольку поиск ошибки привел меня сюда, я подумал, что я бы сказал, что это не всегда технические решения выше, а что-то более простое. В моем случае это был Firefox. Прежде чем я запустил программу, он уже использовал 1,157M.
Оказывается, я смотрел 50-минутный видеоролик за раз в течение нескольких дней, и это все испортило.
Это своего рода исправить, что эксперты исправляют, даже не думая об этом, но для подобных мне это стоит задуматься.

M61Vulcan
30 янв. 2017, в 13:14

Поделиться

Запуск script, как это (пример cron, например): php5 /pathToScript/info.php создает ту же ошибку.

Правильный способ: php5 -cli /pathToScript/info.php

ratm
22 фев. 2016, в 10:19

Поделиться

Я считаю это полезным при включении или требовании:
dbconnection.php, _functions.php
в файлах, которые фактически обрабатываются,
 вместо включения в заголовок.
Который включен сам.

Итак, если ваш заголовок и нижний колонтитул включен, просто включите все ваши функциональные файлы перед включением заголовка.

Kerim
15 авг. 2015, в 20:08

Поделиться

Если вы используете VPS с виртуальным частным сервером (WHM), вы можете обнаружить, что у вас нет прав на редактирование PHP.INI напрямую; система должна это сделать. На панели управления хостом WHM откройте «Конфигурация службы» > «Редактор конфигурации PHP», измените memory_limit:

Изображение 739

Janckos
24 июнь 2015, в 16:29

Поделиться

Emre BOSTAN
01 фев. 2019, в 20:41

Поделиться

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

DinushaMadusanka
29 дек. 2016, в 11:53

Поделиться

не уверен, что этот ответ будет полезен, но когда я удалил следующие строки из моего кода, все работало нормально!

set_include_path(get_include_path() . get_include_path().'/phpseclib');

include_once ( ‘Чистый/SSH2.php’);
include_once ( ‘Net/SFTP.php’);

Эти строки были включены в каждый выполняемый файл, при работе с файлами один за другим все работало нормально, но при запуске всех файлов я получил проблему с утечкой памяти.
Так или иначе «include_once» не включает в себя вещи один раз, или я делаю что-то неправильно.

Omar Al-Azzawi
11 фев. 2015, в 10:08

Поделиться

Ещё вопросы

  • 1Приложение C # WPF работает на разработанном компьютере, но не где-либо еще
  • 1почему сравнение hashCode () истинно, а справедливое сравнение ложно для двух переменных со строковыми значениями?
  • 0ng-модель не выбирает значения из выпадающего списка, которые генерируются с помощью ng-repeat
  • 0android каждый новый введенный pid (id) затем обновляет просмотр списка. Как мне это сделать?
  • 0AngularJS запускает ряд функций при загрузке страницы
  • 1Изменить значение атрибута следующего брата
  • 1Чтение XML-файла с URL-адреса, появляется пустой
  • 1Регулировка громкости массива байтов аудио данных Java
  • 0AngularJS NG-требуется лучше реализовать из контроллера?
  • 0Как получить текст без тегов HTML
  • 0Привязка значения в функцию ожидания в JavaScript
  • 0HTML CSS Navbar Spacing
  • 0Popover с использованием ui.bootstrap
  • 0Как добавить HTML / текст в Zend-форму htmlTag?
  • 0Где я могу разместить HTML-шаблон для Angular UI Modal?
  • 0SET внутри SELECT (MySQL) ПРОЦЕДУРА
  • 0Подготовьте операторы SQL и введите только, если не дубликаты
  • 0Jquery Draggable — Как сделать, чтобы перетаскиваемый элемент привязывался с шагом в пиксели
  • 0Visual Studio делает статическую библиотеку и DLL из одного проекта
  • 1Объект Javascript против метода String и test ()
  • 1Есть ли в Python реализация set () с ключевым аргументом?
  • 0DB2, проходящий между odbc и mysql
  • 1Как вызвать пользовательский метод из файла JAR
  • 1Как изменить встроенные SVG с помощью JavaScript?
  • 0Реализация билбордов
  • 0Привязка изображения к сообщению, с которым оно связано
  • 0Код — помогите високосному
  • 0не могу установить ширину тега метки в CSS в Safari
  • 0htcaccess и symfony 2 перенаправляют не www -> www
  • 0Используйте jQuery, чтобы получить часть значения JSON и вставить его в div
  • 0MySQL История результатов запросов?
  • 0MariaDB ColumnStore: фильтрация подзапроса по вычисленному значению
  • 0C ++ Использование ASCII вместо буквы в перечислении
  • 0jqGrid Редактирование нескольких строк не сохраняется в базе данных в iOS7
  • 1Раскрась карту Google, Android
  • 1Форматирование XML для отображения в TextView?
  • 0fsockopen () возвращает разные значения на локальном хосте и сервере www
  • 0хотите получить имя файла и его путь, который был загружен с помощью плагина jquery
  • 0Распечатка элементов в списке
  • 1Блок AsynchronousServerSocketChannel, наконец, никогда не выполняется
  • 1Почему производительность снижается при подборе модели Random Forest после снижения с помощью PCA?
  • 1ASP.NET || VsualStudio || Не удалось загрузить файл или сборку? Что я могу сделать?
  • 1Есть ли способы запустить Android на XWindows?
  • 1Как преобразовать данные в объекте команды в DateTime?
  • 0Нужно выровнять флажок, добавить несколько записей и просмотреть файл с датами при редактировании в extjs4?
  • 0Vimeo Advanced API, удаление приложений
  • 1Панды — как изменить ячейку в соответствии со средним числом следующих 10 клеток
  • 1Logback усекается вместо добавления в файл журнала
  • 1перетащить текстовое представление
  • 0Это отвратительно? Копируемый мьютекс для защиты члена класса

Сообщество Overcoder

Ошибка Fatal error: Allowed memory size гласит о том, что вы достигли ограничения по памяти, которые у вас установлены в настройках web-сервера.

Например, текст ошибки:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes) in … говорит, что 128 Мб не достаточно (число выше указано в байтах) и его нужно увеличить, либо в указанном месте решить проблему с утечкой памяти.

Решение проблемы с ограничением памяти

Есть два варианта как завершить операцию:

  • Оптимизировать скрипт.

  • Увеличить лимит по памяти.

Первый вариант сложен и не всегда возможен. Поэтому рассматривать его не будем.

Хотя, зачастую бывает так, что сайт, например, пытается сжать очень большую картинку в другой размер (например, фото в оригинале весит 20 Мб). В этом случае просто используйте оригинальные картинки меньшего размера.

Второй вариант проще и подойдет как временное решение, до тех пор пока не найдется основной корень зла. Существует несколько способов увеличить лимит.

Файл php.ini

Это рекомендуемый способ, если вы имеете доступ к файлу php.ini. Данный способ не сработает на многих платных хостингах провайдер, т.к. там закрывают доступ к этому файлу, в целях безопасности. Внимание! Данный способ затронет все ваши сайты и скрипты, находящиеся на сервере.

Откройте файл php.ini и найдите там строку memory_limit:

memory_limit = 256M

Через .htaccess в корне сайта

Добавьте в самом начале строку php_value memory_limit 256M. Во время выполнения PHP, запишите перед тяжелыми операциями в php-файл следующую строчку

<?php ini_set('memory_limit', '256M');?>

Как посмотреть, сработало ли?

Откройте в панели управления Joomla информацию о системе

И найдите строку memory_limit

Тоже самое можно сделать через команду <?php phpinfo();?>.

Если не получилось…

В случае, если рекомендации из статьи не помогли вам (возможно хостинг не дает таких прав), то обратитесь с этим вопросом к техподдержке вашего хостинга. Если хостер отказал, то рассмотрите вариант с выполнением тяжелых операций на локальной машине. Затем результат работы перенесите на ваш продуктивный сайт в интернете.

Альтернатива

Также оптимизации по памяти можно добиться установкой APC. Он уменьшает потребление памяти в ~1,5-2 раза и ускоряет работу всего сайта в целом. Для нормальной работы Joomla + JBZoo обычно хватает 64 Мб (с серьезным запасом на будущее).

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

К счастью, ошибка допустимого размера памяти в байтах исчерпана — одна из тех ручных проблем, с довольно простым и интуитивно понятным решением. Его сообщение об ошибке гласит: «Допустимый размер памяти в X байтов исчерпан (попытка выделить Y байтов) в пути your-site / some-file-path в строке Z», где X, Y, Z отображаются в виде чисел.

Ошибка исчерпания памяти

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

Решение ошибки

В связи с причиной ошибки сразу приходят на ум два возможных решения: отключение ненужных плагинов и увеличение memory_limit параметр.

Прежде чем приступить к устранению неполадок, настоятельно рекомендуется создать резервную копию вашего сайта WordPress. Вы можете сделать это вручную или обратиться за помощью к своему хостинг-провайдеру.

Еще один совет перед тем, как мы начнем — подождите пару минут и попробуйте обновить страницу, просто чтобы убедиться, что ошибка не только временная.

Деактивация плагинов

Отключение плагинов — это более простой и быстрый из двух возможных способов решения проблемы. Перейдите к Плагины> Установленные плагины, найти плагин и деактивировать его. Очистите кеш браузера и перезагрузите страницу. Повторяйте процесс, пока ошибка не исчезнет. Мы настоятельно рекомендуем оставить эти плагины отключенными.

Однако, если ошибка не устранена или некоторые плагины слишком ценны для деактивации, перейдите ко второму решению.

Увеличение памяти сервера

Прежде чем мы обсудим способы увеличения памяти сервера, вам необходимо знать несколько важных вещей.

Во-первых, увеличение памяти — это Только возможно в рамках вашего хостинг-пакета. Если 256M недостаточно, использование более высоких значений, скорее всего, приведет к внутренней ошибке сервера 500. Проконсультируйтесь с вашим хостинг-провайдером об изменении, особенно если вы используете общий хостинг.

Во-вторых, для внесения изменений, описанных в этом руководстве, вам нужно будет отредактировать файлы с помощью FTP-клиента. Если вам неудобно это делать, попросите своего хостинг-провайдера помочь вам.

Сейчас мы вам покажем 4 метода увеличения memory_limit. После реализации каждого из следующих решений и перед запуском теста не забудьте очистить кеш браузера.

  1. Редактирование wp-config.php‌ ‌file‌

Чтобы отредактировать wp-config.php файл, подключитесь к серверу, используя свои учетные данные FTP. Перейдите в корневой каталог WordPress и найдите wp-config.php файл.

Конфигурация WP Редактировать

Отредактируйте файл с помощью текстового редактора. Просто добавьте следующую строку кода перед / * Все, хватит редактировать! Удачного ведения блога. * / линия.

define( 'WP_MEMORY_LIMIT', '256M' );

Увеличение памяти конфигурации wp

Сохраните изменения и загрузите отредактированный файл туда же, где находился исходный файл. Это действие заменит старый файл.

  1. Редактирование файла php.ini

В php.ini файл также находится в корневом каталоге WordPress, поэтому вы можете получить к нему доступ так же, как и wp-config.php файл.

Откройте файл в текстовом редакторе, найдите memory_limit а также изменить значение, связанное с ним. Точно так же сохраните изменения и замените старый файл новым.

Если файла нет, создайте его и вставьте эту строку кода.

Для некоторых общих хостов вам необходимо укажите свой корневой каталог WordPress, чтобы увеличение лимита памяти вступило в силу. Вы можете сделать это, добавив следующий код в свой .htaccess файл, вверху.

Измените часть «your_username» на свое фактическое имя пользователя cPanel.

<IfModule mod_suphp.c> 
suPHP_ConfigPath /home/your_username/public_html
</IfModule>

Отредактируйте .htaccess файл с помощью текстового редактора. Вы можете найти более подробную информацию о доступе к .htaccess файл в разделе 4, где мы описываем четвертое решение этой ошибки.

Общий хост Htaccess править

  1. Изменение параметров cPanel

Другой способ исправить ошибку — изменить значение ограничения памяти в cPanel. Войдите в cPanel, используя свои учетные данные, перейдите к Программное обеспечение раздел и щелкните «MultiPHP INI Editor».

редактирование cPanel

Выберите свой домен из раскрывающегося списка, найдите атрибут memory_limit и вставьте 256M в качестве соответствующего значения.

cPanel редактирования php.ini image-1

cPanel редактирование php

  1. Редактирование файла .htaccess

Наконец, вы можете исправить ошибку, отредактировав .htaccess файл. Этот файл также находится в корневом каталоге WordPress. Это файл конфигурации сервера и обычно скрытый.

Чтобы получить к нему доступ, вы должны включить соответствующие опции для отображения скрытых файлов в FTP-клиенте по вашему выбору. Если вы используете FileZilla, как это делаем мы, перейдите на вкладку «Сервер» и нажмите «Принудительно показывать скрытые файлы».

Показать скрытые файлы изображения

Подключитесь к серверу, используя свои учетные данные FTP, перейдите в корневой каталог WordPress и найдите .htaccess файл.

Htaccess править

Откройте файл, найдите «memory_limit» и измените значение связанные с этим. Сохраните изменения и замените старый файл новым.

Если кода нет, вставьте эту строку.

php_value memory_limit 256M

Увеличение лимита памяти для Htaccess

Последние мысли

Использование любого из этих методов для исправления ошибки «Допустимый размер памяти в байтах исчерпано» занимает всего несколько минут. Помимо того, чтобы показать вам, как решить эту проблему, мы также попытались пролить свет на источники этой проблемы. С помощью этого руководства вы не только лучше подготовитесь к устранению неожиданных ошибок, но и будете лучше осведомлены о том, как работает ваш веб-сайт.

Moyens Staff

Moyens I/O Staff мотивировал вас, давая советы по технологиям, личному развитию, образу жизни и стратегиям, которые помогут вам.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Неустранимая ошибка приложения фотошоп
  • Нет подключения к принтеру ошибка 0x0000011b