Intereting Posts
Обработка отказов электронной почты с помощью PHP? Драйвер переключения CodeIgniter из mysql -> mysqli Как добавить пользовательские шрифты в TCPDF? PDO были затронуты строк во время выполнения оператора как идентифицировать веб-искателей google / yahoo / msn с помощью PHP? Что лучше по производительности: двойные кавычки с переменными или одинарные кавычки с конкатенациями? Как получить окончательный, перенаправленный, канонический URL-адрес веб-сайта с использованием PHP? Идентификатор процесса проверки PHP что это уведомление, относящееся к Отправить форму с помощью ajax Первый результат Mysqli fetch_assoc Могу ли я повторять переменную с одинарными кавычками? Могу ли я использовать зарезервированные имена PHP для своих функций и классов? Larvel 4.2 artisan CLI больше не работает после обновления композитора Laravel 5 получает префикс маршрута в методе контроллера

Разница между использованием памяти memory_get_peak_usage и фактическим использованием php-процесса

Почему результат php memory_get_peak_usage сильно отличается от размера памяти, который показан как выделенный для обработки при использовании команд «top» или «ps» в Linux?

Я установил 2 Mb памяти_limit в php.ini Мой однострочный php-скрипт с

echo memory_get_peak_usage(true); 

говорит, что он использует 786432 байта (768 Kb)

Если я попытаюсь спросить систему о текущем процессе php

 echo shell_exec('ps -p '.getmypid().' -Fl'); 

это дает мне

 FS UID PID PPID C PRI NI ADDR SZ WCHAN RSS PSR STIME TTY TIME CMD 5 S www-data 14599 14593 0 80 0 - 51322 pipe_w 6976 2 18:53 ? 00:00:00 php-fpm: pool www 

RSS param – 6976, поэтому использование памяти – 6976 * 4096 = 28573696 = ~ 28 Мб

Откуда появился 28 МБ и есть ли способ уменьшить размер памяти, который используется процессом php-fpm?

Размер памяти в основном используется самим процессом PHP. memory_get_peak_usage() возвращает память, используемую вашим конкретным скриптом. Способы уменьшить накладные расходы памяти – удалить количество расширений, статически компилировать PHP и т. Д. Но не забывайте, что вилка php-fpm (should) и что большая часть использования памяти, которая не отличается от процесса PHP, находится в общий факт (пока он не изменится).

Сам PHP может быть установлен только на ограничение в 2 миллиона, но он работает WITHIN для дочернего процесса Apache, и этот процесс будет иметь гораздо больший объем памяти.

Если вы запускали скрипт из командной строки, вы могли бы использовать память PHP самостоятельно, так как она не была завершена в Apache и работает сама по себе.

Пиковое использование памяти используется только для текущего скрипта.