Как увеличить лимит php памяти в wordpress

Содержание

Введение

WordPress имеет встроенный загрузчик медиафайлов. Это делает загрузку файлов на ваш блог лёгкой задачей — нет необходимости использовать FTP-клиенты или файловые менеджеры. Все медиафайлы, которые могут вам понадобиться в вашем блоге, могут быть легко загружены в несколько кликов мыши.


Однако стоит отметить, что медиа загрузчик использует PHP для загрузки файлов на сервер и, к сожалению, имеет лимит на максимальный размер загружаемого файла. Вы можете проверить максимальный размер файла в WordPress зайдя в Панель администратора→ Медиафайлы→ кнопка Добавить новый.

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

Существует несколько способов для увеличения максимального размера загружаемого файла в WordPress. Мы расскажем о них в этом руководстве.

Конфигурация памяти по умолчаниюDefault memory configuration

В конфигурации по умолчанию каждый экземпляр выделяет небольшой объем ОЗУ (от 40 МБ до 50 МБ) при запуске, даже если экземпляр бездействует.Under the default configuration, each instance allocates a small amount of RAM (40 MB to 50 MB) at startup, even if the instance is idle. Параметры конфигурации для каждого экземпляра.Configuration settings are per instance. При выполнении нескольких экземпляров, например табличного и многомерного экземпляра на одном и том же оборудовании, каждый экземпляр будет распределять собственную память независимо от других экземпляров.If you are running multiple instances, such as a tabular and multidimensional instance on the same hardware, each instance will allocate its own memory independently of other instances.

ПараметрSetting ОписаниеDescription
LowMemoryLimitLowMemoryLimit Нижнее пороговое значение, при достижении которого сервер начинает высвобождать память, выделенную редко используемым объектам (для многомерных экземпляров).For multidimensional instances, a lower threshold at which the server first begins releasing memory allocated to infrequently used objects.
VertiPaqMemoryLimitVertiPaqMemoryLimit Нижнее пороговое значение, при достижении которого сервер начинает высвобождать память, выделенную редко используемым объектам (для табличных экземпляров).For tabular instances, a lower threshold at which the server first begins releasing memory allocated to infrequently used objects.
TotalMemoryLimitTotalMemoryLimit Верхнее пороговое значение, при достижении которого службы Analysis Services начинают высвобождать память более агрессивно, чтобы освободить место для уже выполняемых запросов и запросов, имеющих высокий приоритет.An upper threshold at which Analysis Services begins releasing memory more aggressively to make room for requests that are in execution as well as new high priority requests.
HardMemoryLimitHardMemoryLimit Еще одно пороговое значение, при достижении которого службы Analysis Services начинают отклонять поступающие запросы из-за нехватки памяти.Another threshold at which Analysis Services begins rejecting requests outright due to memory pressure.

What is the PHP Memory Limit in WordPress?

PHP is the server-side language that generates the HTML pages that create your site. PHP is a powerful, dynamic language that can do things like perform calculations, process WordPress queries, and more, but it needs memory to carry out these operations.

The default memory limit for WordPress is 32MB, but it’s common to have to increase it. WooCommerce’s recommended PHP memory limit for WordPress is 64MB, for example.

When WordPress reaches the default memory limit, it will attempt to increase the memory to 40MB for a single site install and 64MB for multisite. If that isn’t enough, then you will see the fatal error message.

A PHP memory limit of 128MB should be more than enough for most sites unless you have a plugin that needs more. If you want to see how much memory different plugins use, install the Server IP & Memory Usage Display plugin.

Once you activate the Server IP and Memory Usage Display plugin, you can deactivate plugins and see how it affects memory usage. Quality plugins should use memory efficiently to avoid overloading your server.

Механизм горизонтального автомасштабирования нод (Cluster Autoscaler)

Для того, чтобы нивелировать негативное влияние на систему при всплесках нагрузки, наличие настроенного hpa бывает недостаточно. Например, согласно настройкам в hpa controller manager принимает решение о том, что количество реплик необходимо увеличить в 2 раза, однако на нодах нет свободных ресурсов для запуска такого количества подов (т.е. нода не может предоставить запрашиваемые ресурсы пода requests) и эти поды переходят в состояние Pending.

В этом случае, если у провайдера имеется соответствующий IaaS/PaaS (например, GKE/GCE, AKS, EKS и т.д.), нам может помочь такой инструмент, как Node Autoscaler. Он позволяет задать максимальное и минимальное количество нод в кластере и автоматически регулировать текущее количество нод (путем обращения к API облачного провайдера для заказа/удаления ноды), когда наблюдается нехватка ресурсов в кластере и поды не могут быть запланированы (находятся в состоянии Pending).

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

увеличиваем wp memory limit для вордпресс

От обновлений вордпресс, а именно стартуя с версии 2.5 в движке появляется возможность регулировок этой самой WP_MEMORY_LIMIT памяти, что в свою очередь позволяет задавать ограничения соответственно.

Константа WP_MEMORY_LIMIT — ветка (или группа) — базовые — здесь можно посмотреть о том, как регулировать автообновление WordPress: статья открывает цикл — изучение констант WordPress

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

обычно сейчас выделяться от 40мГб до 64 (многоузловых вариантов) — в этом случае, логичнее, коли административно выставить значения чуть более этих величин, либо 64.

Условные теги woocommerce…

Подборка полезного кода (сниппеты) для работы магазина на WooC…


Итак:

…тот же WooCommerce (на момент даты статьи) запрашивает 64мГб, — давайте на его примере и продолжим… хотя описанные регулировки классические…

Функция для увеличения и ограничения времени выполнения PHP

Функция set_time_limit ограничивает время выполнения скрипта.

Синтаксис запуска:

set_time_limit (СЕКУНДЫ)

Она задает время в секундах, в течение которого скрипт должен завершить работу. Если скрипт не успевает, вызывается фатальная ошибка. По умолчанию дается 30 секунд, либо время, записанное в настройке max_execution_time в php.ini (если такая настройка установлена).

При вызове set_time_limit() перезапускает счетчик с нуля. Другими словами, если тайм-аут изначально был 30 секунд, и через 25 секунд после запуска скрипта будет вызвана функция set_time_limit(20), то скрипт будет работать максимум 45 секунд.

Список параметров

СЕКУНДЫ (максимальное время выполнения в секундах. Если задан ноль, время выполнения неограничено)

Возвращаемые значения: возвращает TRUE в случае успеха, иначе FALSE.

Внимание: эта функция не работает, если PHP работает в безопасном режиме. Обойти это ограничение можно только выключив безопасный режим или изменив значение настройки в php.ini.. Замечание: функция set_time_limit() и директива max_execution_time влияют на время выполнения только самого скрипта

Время, затраченное на различные действия вне скрипта, такие как системные вызовы функции system(), потоковые операции, запросы к базам данных и т.п. не включаются в расчет времени выполнения скрипта. Это не относится к системам Windows, где расчитывается абсолютное время выполнения.

Замечание: функция set_time_limit() и директива max_execution_time влияют на время выполнения только самого скрипта. Время, затраченное на различные действия вне скрипта, такие как системные вызовы функции system(), потоковые операции, запросы к базам данных и т.п. не включаются в расчет времени выполнения скрипта. Это не относится к системам Windows, где расчитывается абсолютное время выполнения.

Обе set_time_limit(…) и ini_set(‘max_execution_time’,…); не учитывают время, потраченное функциями sleep, file_get_contents, shell_exec, mysql_query и некоторыми другими.

Настройка

FPM использует синтаксис php.ini для своего файла конфигурации php-fpm.conf и файлов конфигурации пулов.

Список глобальных директив php-fpm.conf

string

Путь к PID-файлу. По умолчанию: none.

string

Путь к файлу журнала ошибок. По умолчанию: #INSTALL_PREFIX#/log/php-fpm.log. Если задано как «syslog», логирование будет производиться в syslogd, а не в локальный файл.

string

Уровень журналирования ошибок. Возможные значения: alert, error, warning, notice, debug. По умолчанию: notice.

integer

Ограничить журналирование для журналируемых линиях, что позволяет записывать сообщения длиной более 1024 символов без упаковки (wrapping). Значение по умолчанию: 1024. Доступно с PHP 7.3.0.

boolean

Экспериментальное журналирование без дополнительной буферизации. Значение по умолчанию: yes. Доступно с PHP 7.3.0.

string

Используется для указания, какой тип программ будет логировать сообщения. По умолчанию: daemon.

string

Предшествует любому сообщению. Если у вас запущено несколько экземпляры FPM, вы можете изменить значение по умолчанию на то, которое вам необходимо. По умолчанию: php-fpm.

int

При данном числе рабочих процессов, завершенных с SIGSEGV или SIGBUS за промежуток времени, установленный emergency_restart_interval FPM будет перезагружен. Значение 0 означает ‘Off’ (отключено). По умолчанию: 0 (Off).

Интервал времени, используемый emergency_restart_interval, чтобы определить, когда FPM будет мягко перезагружен. Это полезно для избежания случайных повреждений общей памяти ускорителя (accelerator). Доступные единицы измерения: s(секунды), m(минуты), h(часы), или d(дни). Единица измерения по умолчанию: секунды. Значение по умолчанию: 0 (Off).

Время, в течение которого дочерние процессы ждут ответа на сигналы мастер-процессу. Доступные единицы измерения: s(секунды), m(минуты), h(часы) или d(дни). Единица измерения по умолчанию: секунды. Значение по умолчанию: 0.

int

Максимальное количество процессов, которое может породить FPM

Это сделано для того, чтобы контролировать глобальное количество процессов, когда используется большой пул динамического PM. Используйте с осторожностью. По умолчанию: 0.

int

Указывает приоритет (Unix nice(2)) мастер-процесса (только если установлено). Принимает значения от -19(максимальный приоритет) до 20(минимальный.) По умолчанию: не установлено.

boolean

Запустить FPM в фоновом режиме. Установите значение ‘no’, чтобы запустить FPM в диспетчере для отладки

По умолчанию: yes.

int

Устанавливает rlimit открытых файловых дескрипторов для мастер-процесса. По умолчанию: Устанавливает rlimit для открытого дескриптора файла мастер-процесса(?).

int

Устанавливает rlimit максимального размера ядра для мастер-процесса. По умолчанию 0.

string

Указывает, какой событийный механизм будет использован FPM. Возможны такие варианты: select, pool, epoll, kqueue (*BSD), port (Solaris). По умолчанию: не установлено (автоопределение).

int

Если FPM собран с интеграцией с systemd, указывает интервал, в секундах, между оповещениями systemd о своем состоянии. Для отключения задайте 0. По умолчанию: 10.

Увеличение максимального размера загружаемых файлов в php.ini

Через файловый менеджер на хостинге или через FTP клиент зайдите в корневую папку вашего сайта и найдите файл php.ini. В стандартной установке Вордпресс этого файла нет, если у вас его нет — создайте его и добавьте в него такую запись:

upload_max_filesize = 100Mpost_max_size = 200Mmemory_limit = 256Mfile_uploads = Onmax_execution_time = 300

upload_max_filesize = 100M — Максимальный размер закачиваемого файла 100 Мб.post_max_size = 200M — Максимальный размер поста.memory_limit = 256M — Объем PHP памяти, который Вордпресс может использовать для работы с плагинами и скриптами. Если вы раньше редактировали этот параметр, оставьте его только в одном месте.

Измените 100M, 200M и 256M на значения, которые вам нужны. Сделайте так, чтобы параметры 1 — 3 увеличивались от меньшего к большего, то есть значение upload_max_filesize должно быть меньше других, post_max_size — средним, и memory_limit — самым большим.

Значение max_execution_time = 300 означает количество времени в секундах, которое может быть потрачено на загрузку одного скрипта.

Очистите кеш, проверьте изменения.

Если этот способ не сработал, попробуйте переименовать файл php.ini в php5.ini.

Вопросы производительности

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

Есть две основные области влияющие на производительность: уменьшение размера используемой памяти и замедление работы при сборке мусора. Рассмотрим их.

Уменьшение размера используемой памяти

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

Пример #1 Пример использования памяти

Замедление работы

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

Пример #2 Влияние на производительность

Мы запустим скрипт два раза: с включенной опцией и без нее.

Пример #3 Запуск скрипта

time php -dzend.enable_gc=0 -dmemory_limit=-1 -n example2.php
# и
time php -dzend.enable_gc=1 -dmemory_limit=-1 -n example2.php

На тестовой машине первая команда примерно выполняется 10.7 секунд, а вторая примерно 11.4 секунды. Это примерно на 7% медленнее. Однако, максимальное использование памяти скриптом уменьшилось на 98% с 931 Мб до 10 Мб. Этот тест не очень научный, но он действительно демонстрирует преимущество по использованию памяти, обеспечиваемое сборщиком мусора. Также хорошо то, что замедление для этого скрипта всегда примерно 7%, тогда как экономия памяти увеличивается все больше и больше при нахождении нового мусора.

Внутренняя статистика сборщика мусора

Можно получить немного больше информации о том, как механизм сборки мусора выполняется в PHP. Но для этого вам необходимо пересобрать PHP для включения теста производительности и кода для дополнительного сбора данных. Необходимо установить переменную окружения CFLAGS в значение -DGC_BENCH=1 до выполнения команды ./configure с вашими параметрами. Следующие команды должны сработать:

Пример #4 Сборка PHP для включения теста производительности GC

export CFLAGS=-DGC_BENCH=1
./config.nice
make clean
make

При запуске вышеприведенного примера с обновленным PHP, можно увидеть следующую информацию по завершении работы скрипта:

Пример #5 Статистика GC

GC Statistics
-------------
Runs:               110
Collected:          2072204
Root buffer length: 0
Root buffer peak:   10000

      Possible            Remove from  Marked
        Root    Buffered     buffer     grey
      --------  --------  -----------  ------
ZVAL   7175487   1491291    1241690   3611871
ZOBJ  28506264   1527980     677581   1025731

Наиболее полезная статистика отображена в первом блоке. Можно увидеть, что механизм сборки мусора был запущен 110 раз, и суммарно было освобождено свыше 2 миллионов записей в памяти. Если сборка мусора была запущена хотя бы раз, то максимальное число корней в буфере всегда будет равно 10 000.

Заключение

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

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

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

Выселение пода

Как известно — каждому поду присваивается один из 3 QoS-классов:

  1. guaranuted — назначается тогда, как для каждого контейнера в поде для memory и cpu задан request и limit, причем эти значения должны совпадать
  2. burstable — хотя бы один контейнер в поде имеет request и limit, при этом request < limit
  3. best effort — когда ни один контейнер в поде не ограничен по ресурсам

При этом, когда на ноде наблюдается нехватка ресурсов (диска, памяти), kubelet начинает ранжировать и выселять под’ы по определенному алгоритму, который учитывает приоритет пода и его QoS-класс. Например, если речь идет о RAM, то на основе QoS класса начисляются очки по следующему принципу:

  • Guaranteed: -998
  • BestEffort: 1000
  • Burstable: min(max(2, 1000 — (1000 * memoryRequestBytes) / machineMemoryCapacityBytes), 999)

Т.е. при одинаковом приоритете, kubelet в первую очередь будет выселять с ноды поды с QoS-классом best effort.

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

Why does WordPress need more memory to begin with?

In one way, increasing the WordPress memory limit is a quick adjustment similar to increasing the max upload size in the WordPress wp-config.php file; however, you need to be careful because increasing the memory limit can sometimes make inefficiencies in WordPress harder to detect.


Before increasing the Memory Limit in WordPress, I want to encourage you to first try to uncover what is sucking up so much memory. Oftentimes, throwing more resources at a problem may cost a lot more in the long run, especially if you have to upgrade hosting plans. Inefficiencies in WordPress also manifest as a slower site and poor user experience, so getting to the root of the problem, can fix multiple downstream issues you may be having.

One component of WordPress that is prone to issues if overlooked, is the version of PHP your hosting server is using. Only 4.4% of WordPress sites are running the latest version of PHP, with 64% running a version of PHP that is no longer receiving active updates.

Not only does this compromise security, but the latest version of PHP 7.3, can handle as much as 3x as many requests per second as PHP 5.6. So updating to the latest version of PHP on your hosting server will make WordPress more efficient and negate the need to increase the memory limit in WordPress.

What is the Maximum Upload Limit in WordPress?

The maximum upload limit in WordPress refers to the maximum file size for your uploads that WordPress will allow. You can see what the maximum upload limit is in WordPress in the media library upload screen.

This is also where the max upload size error message shows up

This is a server-side setting that hosts use to reduce the number of resources needed to serve your site. It’s a way to keep you from uploading huge files and images.

While this may benefit your host, it also helps your site performance as well. Uploads in the form of huge images, for instance, perform poorly on your site because they take longer to download and serve. So just like with the memory limit, before you throw more resources at the problem and increase the upload limit, see if there’s something you can do to reduce the file size first.

If your images are too large for their container or if you haven’t compressed your images, then you’re better off correcting those issues because they address the cause of the issue, which is not optimizing your assets correctly. Check out our guide to optimizing images for more.

Что такое PHP память и для чего она используется

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

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

Как узнать сколько PHP памяти выделено

По умолчанию Вордпресс выделяет 40 MB для обычного сайта и 64 MB для мультисайта.

Если у вас установлен WooCommerce, зайдите в WooCommerce — Статус — Состояние системы  — WP Memory Limit. Некоторые темы, пейдж-билдеры и плагины безопасности показывают эту информацию, попробуйте найти. Если вы не можете найти, проверьте это плагином Server IP & Memory Usage Display или TPC! Memory Usage (оба бесплатные) или еще чем-то подобным.

Сколько PHP памяти нужно

В зависимости от плагинов, которые вы используете, увеличьте до 128 MB. Если у вас много плагинов, или магазин на WooCommerce — увеличьте до 256 MB.

Использование общей памяти в качестве накопителя

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

  • буферную память (хранение запросов к базе данных, данных Web-сервисов, внешних данных);
  • память сеансов;
  • обмен данными между приложениями.

Прежде чем продолжить, я хотел бы представить небольшую библиотеку SimpleSHM. Это компактный уровень абстракции для работы с общей памятью в PHP, который позволяет легко манипулировать сегментами с применением объектно-ориентированного подхода. Эта библиотека помогает создавать гораздо более чистый код при написании небольших приложений, использующих общую память для хранения данных. Для начала работы с SimpleSHM загрузите tarball-файл со страницы GitHub.

Существует три вида операций: чтение, запись и удаление. Простое создание экземпляра объекта класса обеспечит открытие сегмента общей памяти. Основные моменты отражены в листинге 8.

Листинг 8. Основы использования SimpleSHM
<?php

$memory = new SimpleSHM;
$memory->write('Sample');
echo $memory->read();

?>

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

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

Листинг 9. Открытие заданного сегмента
<?php

$new = new SimpleSHM(897);
$new->write('Sample');
echo $new->read();

?>

Магический метод заботится о вызове функции по отношению к сегменту, чтобы отключить объект и отсоединить его от сегмента. Назовем это «SimpleSHM 101». Теперь воспользуемся им для более высокой цели: использования общей памяти в качестве накопителя. Для хранения наборов данных требуется сериализация, поскольку в памяти нельзя хранить массивы или объекты. Здесь для сериализации используется JSON, но подойдет и любой другой метод, например, XML или встроенные функции сериализации PHP. Пример приведен в листинге 10.

Листинг 10. Использование общей памяти в качестве накопителя
<?php

require('SimpleSHM.class.php');

$results = array(
	'user' => 'John',
	'password' => '123456',
	'posts' => array('My name is John', 'My name is not John')
);

$data = json_encode($results);

$memory = new SimpleSHM;
$memory->write($data);
$storedarray = json_decode($memory->read());

print_r($storedarray);

?>

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

Этот метод хранения полезен не только для использования в качестве буфера, но и для обмена данными между приложениями, если эти данные хранятся в формате, понятном обоим приложениям. Нельзя недооценивать возможности общей памяти в Web-приложениях. Существует множество различных способов эффективной реализации такого хранения, и единственное ограничение здесь ― талант и мастерство программиста.

Увеличение выделенной памяти для PHP скриптов

Директива в файле php.ini

memory_limit = 128M

задаёт максимальный объем памяти в байтах, который разрешается использовать скрипту. Это помогает предотвратить ситуацию, при которой плохо написанный скрипт съедает всю доступную память сервера. Для того, чтобы убрать ограничения, установите значение этой директивы в -1.

В версиях до PHP 5.2.1 для использования этой директивы, она должна была быть указана на этапе компиляции. Так, ваша строка конфигурации должна была включать: —enable-memory-limit. Эта опция компиляции была также необходима для использования функций memory_get_usage() и memory_get_peak_usage() до версии 5.2.1.

Если используется целое число, то значение измеряется байтами. Вы также можете использовать сокращённую запись.

Доступные опции: K (для килобайт), M (для мегабайт) и G (для гигабайт; доступна начиная с PHP 5.1.0); они регистронезависимы. Все остальное считается байтами. 1M равно одному мегабайту или 1048576 байтам. 1K равно одному килобайту или 1024 байтам. Эти сокращения вы можете использовать в php.ini и в функции ini_set()

Обратите внимание, что числовое значение приводится к типу integer; например, 0.5M интерпретируется как 0.

как запретить редакцию файлов в админке


Если, не дай Бог, ваш сайт взломан и в админке хозяйничает злой мошенник (а он может нагородить всё что его чёрной душе угодно), — нужно его идиотские действия присечь, например, таким одним из способов: исключить в административной панели редакцию файлов вашего сервера (корневых файлов сайта)!

Всё просто: допишите такую строку к себе в файл конфигурации…

Отныне редакции файлов в админке сайта — запрещены: все правки только средствами файлового менеджера…

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

как включить новые (актуальные) версии php — хостинг Джино.

!..подписываясь на обновления mihalica.ru —…расстаёмся с невежеством..!

На этом моя повесть нынче решительно окончена…!

А это кино для того, чтобы все наши пароли были всегда под рукой и, более того, застрахованы от потерь и похищения…

PHP memory_limit is a per-script setting

PHP.net’s documentations puts it this way:

This sets the maximum amount of memory in bytes that a script is allowed to allocate. This helps prevent poorly written scripts for eating up all available memory on a server...

Source:

Unlike say MySQL’s key_buffer_size or innodb_buffer_pool settings, PHP memory_limit setting is not a storage space where multiple PHP scripts pool from or grow within. Rather it’s a per-script limit. PHP memory_limit is the maximum amount of server memory a single PHP script is allowed to consume. When blocked, the resulting error output looks something like this:

Fatal error: Allowed memory size of x bytes exhausted (tried to allocate x bytes) in /path/to/php/script

or like this:

PHP Fatal error: Out of memory (allocated x) (tried to allocate x bytes) in /path/to/php/script

So for example, if two or more scripts are requested simultaneously, each is completely independent from the other. They do not share the memory_limit setting. Remember PHP is not designed for and does not support multithreading. Thus, if five (5) PHP scripts are simultaneously using 100MB each, that would total 500MB of PHP memory usage, and a PHP memory limit of 128M wouldn’t be hit.

That said, for scripts which request other PHP scripts inline using require, include or include_once, this limit is then inherited and shared by all included scripts that are dependent on the parent script.

“The include statement takes all the text/code/markup that exists in the specified file and copies it into the file that uses the include statement. The require() function is identical to include(), except that it handles errors differently. If an error occurs, the include() function generates a warning, but the script will continue execution. The require() generates a fatal error, and the script will stop.” – W3schools

“The require_once() statement is identical to require() except PHP will check if the file has already been included, and if so, not include (require) it again.” – php.net

Now regarding the original example mentioned in the outset. A lower setting of 128M is always better because if there are PHP scripts trying to use more than 128M, those scripts would now return memory limit exceeded errors. In the above issue that was not the case, so regardless of 128M or 1G memory_limit setting it only comes into play if there’s inefficient script(s).

Fortunately, the PHP memory_limit setting will block inefficient code, which then alerts you so that you can optimize your code. Until fixed, you may want to temporarily increase PHP memory_limit to avoid your web application becoming unusable due to PHP out of memory errors.

If you don’t have available memory on your server, you’ll sometimes be faced with the decision of whether to increase PHP memory_limit to meet requirements of scripts or, to optimize your code. You should always optimize as the preferred option when possible. Also, you can increase PHP’s memory limit for specific websites. One method would be to place a php.ini file in the site’s web root. You can even set the limit for specific scriptname.php. For example using ini_set(‘memory_limit’,’256MB’).


С этим читают