ВОЙТИ
    opened image

    Системный сборщик мусора PHP на Linux

    Системный сборщик мусора

    Системный сборщик мусора (Garbage Collector) является важным компонентом веб-приложений, включая PHP, и используется для автоматического удаления неиспользуемых данных и ресурсов в памяти, таких как файлы сессий и журналы. В PHP настройки сборщика мусора контролируются директивами в файле php.ini.

    Одной из таких директив является `session.gc_probability`, которая определяет вероятность запуска сборщика мусора во время каждого запроса. Эта вероятность рассчитывается как отношение `gc_probability` к `gc_divisor`, то есть значение `1/10` означает, что сборщик мусора будет запущен в одном из десяти запросов, или с вероятностью 10% на каждый запрос. Данная директива применяется только в случае, если обработчик сессий установлен в `Files`, а файлы сессий сохраняются в директории, указанной в директиве `Session.save_path`.

    Для изменения значения `session.gc_probability` в файле конфигурации `/etc/php.d/apache/php.ini`, необходимо отредактировать этот файл, установив требуемое значение. По умолчанию это значение равно 0, что означает, что сборщик мусора не будет автоматически запущен.

    После внесения изменений в конфигурационный файл PHP требуется перезапустить веб-сервер Apache для применения новых настроек. Это можно сделать, выполнив команду `/etc/init.d/apache2 restart` в командной строке.

    Кроме того, при работе с веб-приложениями, которые имеют большую нагрузку на сервер, может быть полезно установить задержку времени (`session.gc_maxlifetime`) в секундах, после которой данные сессии будут считаться "мусором" и потенциально удалены сборщиком мусора. Например, установка значения `session.gc_maxlifetime = 1440` указывает, что сессионные данные, которые не были обновлены в течение 1440 секунд (или 24 минут), будут удалены.

    Очистка журналов

    Для освобождения дискового пространства и удаления старых архивных журналов в системе Linux существуют команды `journalctl`, позволяющие настроить и выполнить очистку журналов.

    Команда  используется для очистки архивных журналов таким образом, чтобы объем, занимаемый журналами на диске, не превышал указанное значение (например, 100 Мб):

    journalctl --vacuum-size=100M

    Команда выполняет очистку архивных журналов, оставляя на диске только данные, относящиеся к последнему указанному периоду времени (например, 1 день):

    journalctl --vacuum-time=1d

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

    journalctl --vacuum-time=1weeks

     

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