Я создал на своем новом сервере такую структуру каталогов:
/ home / $ username / $ domain / (например: /home/domaincom/domain.com/) - public_html - logs - conf - tmp
Все работает хорошо, но, к сожалению, apache (или PHP) не очищает каталог tmp автоматически. : /
Есть ли простой способ очистить эти каталоги? Например, такое решение, как logrotate, где я устанавливаю каталог для поворота следующим образом: / home / * / * / logs
Проблема возникла из-за того, что во временном каталоге пользователя находится 1562074 файла. : / Я не уверен, кто (apache, php, внешний скрипт) должен чистить этот каталог и как часто.
Apache или php не обязаны очищать неиспользуемые временные файлы (в основном сессию _...)?
Спасибо за любые ответы. :)
Предполагая, что Linux, напишите сценарий для анализа домашнего каталога, для каждого каталога перейдите в каталог tmp и удалите все за определенную дату.
Примером может быть
#!/bin/bash
for list '/bin/ls -lRt /home/ | grep tmp/' do
/usr/bin/find $list -atime -10 -type -f -exec rm -f {} # find+ delete files older than ten days
done
Очевидно, вам захочется провести здесь некоторые проверки, а мой синтаксис может быть неправильным и так далее. Вы можете исключить некоторые каталоги, передайте их команде ls в начале ..
Как только вы будете довольны, скрипт найдет и удалит то, что вы хотите, настройте его как задание cron для запуска ночью.
Вы изменили путь сохранения сеанса PHP по умолчанию.
В системе Debian директива PHP session.gc_probability
установлен в 0, предотвращая очистку старых сеансов, и настроено задание cron, которое очищает старые сеансы PHP - но только из пути сохранения по умолчанию!
Так что вы можете исправить это одним из двух способов:
session.gc_probability = 1
в php.ini
.Универсальное решение практически невозможно. Зачем? Временная папка каждого пользователя имеет значение для каждого процесса. Кроме того, администратор не может полагаться на $HOME/tmp
быть временной папкой пользователя, поскольку пользователь может ее изменить, и на самом деле мы (пользователи) делаем это довольно часто, устанавливая $ TMP на что-то другое. Вдобавок ко всему, каждый процесс может иметь разные настройки, которыми пользователь вообще не может управлять ...
Предполагая, что вы заботитесь только о начальных значениях пользователей переменной среды $ TMP, вы можете написать скрипт, который будет просматривать список пользователей, получать их оболочку по умолчанию (это еще одна сложность), находить их настройки по умолчанию для $ TMP и наконец, очистите эти папки. Вторая альтернатива - написать программу, которая входит в систему как конкретный пользователь, считывает $ TMP пользователей и очищает папку ...
Однако я предполагаю, что все, что вам нужно, - это очистить временные файлы в тех папках, которые некоторые веб-приложения используют для хранения загруженных файлов. Проще всего сохранить собственный список этих каталогов в виде простого текстового файла и написать небольшой скрипт, который будет просматривать этот список и удалять файлы старше N дней ...
Я бы предпочел переосмыслить общую структуру каталогов и настроить lighttpd или любой другой веб-сервер, который вы используете, php и все остальное для хранения временных файлов в ИЗВЕСТНОМ месте, чтобы вы могли легко выполнить очистку. Я бы настроил их все для хранения временных файлов, скажем, /tmp/<domain>/<service>
поэтому для example.com у вас будет: /tmp/example.com/phpbb, /tmp/example.com/redmine, /tmp/example.com/php-sessions. Конечно, вы должны быть осторожны, чтобы правильно установить права собственности и разрешения.