<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>kocherov.net &#187; garbage collector</title>
	<atom:link href="https://kocherov.net/tag/garbage-collector/feed/" rel="self" type="application/rss+xml" />
	<link>https://kocherov.net</link>
	<description>создание и поддержка парсеров, систем сбора и анализа информации</description>
	<lastBuildDate>Thu, 19 Feb 2026 13:03:25 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.6.1</generator>
		<item>
		<title>Не удаляются файлы сессий PHP</title>
		<link>https://kocherov.net/ne-udalyayutsya-faylyi-sessiy-php/</link>
		<comments>https://kocherov.net/ne-udalyayutsya-faylyi-sessiy-php/#comments</comments>
		<pubDate>Mon, 19 Nov 2012 16:47:10 +0000</pubDate>
		<dc:creator>Pavel Kocherov</dc:creator>
				<category><![CDATA[Работа]]></category>
		<category><![CDATA[garbage collector]]></category>
		<category><![CDATA[iis]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[администрирование]]></category>

		<guid isPermaLink="false">http://kocherov.net/?p=77</guid>
		<description><![CDATA[Частая проблема &#8212; tmp папка web сервера вдруг содержит n миллионов файлов. Скорее всего это файлы сессий. И образовались они там не вдруг, а за пару месяцев/лет. Диагностируем Во первых, затруднительно посмотреть, что находится в папке, т.к. ни FAR, ни виндовый проводник (серверы с проблемой были на windows) не хотят такую папку открывать (FAR вылетал [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Частая проблема &#8212; tmp папка web сервера вдруг содержит n миллионов файлов. Скорее всего это файлы сессий. И образовались они там не вдруг, а за пару месяцев/лет.</p>
<h5>Диагностируем</h5>
<p>Во первых, затруднительно посмотреть, что находится в папке, т.к. ни FAR, ни виндовый проводник (серверы с проблемой были на windows) не хотят такую папку открывать (FAR вылетал забрав 1гб оперативной памяти, где-то на чтении трехмиллионного файла). Как зайти в папку, содержащую много файлов? Переходим в папку в консоле через <strong>cd</strong> (переходит махом не зависимо от количества файлов) и пишем:</p>
<p><strong>dir /p</strong></p>
<p>Это постраничный вывод содержимого каталога. Несколько раз жмем пробел, убеждаясь что все забито файлами сессий.</p>
<h5>Исправляем</h5>
<p>Что же произошло и почему garbage collector (далее GC) PHP забил на вашу tmp папку и сто лет ее не чистил?</p>
<p>1) Возможно, не правильно заданы параметры php.ini  session.gc_probability и session.gc_divisor. Вероятность запуска GC при каждом запуске скрипта - session.gc_probability / session.gc_divisor. По умолчанию &#8212; 1/100. Соответственно, если задать session.gc_probability = 0 GC не запустится никогда. Соответсвующие параметры нужно проверить и в коде приложения.</p>
<p>2) Возможно, вы изменили session.save_path в своем приложении, и теперь она отличается от той, которая в php.ini. В этом случае GC чистить в вашей кастомной папке ничего не будет и вам нужно заботиться об этом самим, т.к. он чистит только папку, которая указана в ini. Цитата из конфигурационного файла:</p>
<blockquote><p>; NOTE: If you are using the subdirectory option for storing session files<br />
; (see session.save_path above), then garbage collection does *not*<br />
; happen automatically. You will need to do your own garbage<br />
; collection through a shell script, cron entry, or some other method.<br />
; For example, the following script would is the equivalent of<br />
; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):<br />
; cd /path/to/sessions; find -cmin +24 | xargs rm</p></blockquote>
<p>3) Последнее, самое непонятное. Возможно, вы стали жертвой бага - https://bugs.php.net/bug.php?id=55333 Не знаю, правда это или нет, и баг ли это php или криворукость админов, но у меня на двух серверах, где не была изменена папка сессий по умолчанию, и все сохранялось в &#171;C:/Windows/Temp&#187;, GC не работал. И это при абсолютной идентичности других настроек с серверами, где папка была изменена и все было ок. Решил проблему просто &#8212; сменил папку с дефолтной на свою, чего и вам желаю.</p>
<h5>Удаляем</h5>
<p>В tmp папке на момент решения проблемы было 4 миллиона файлов. Удалил их просто:</p>
<p><strong>del sess_*</strong></p>
<p>Процесс удаления не слишком нагружает сервер, и было решено просто запустить операцию на сутки. Тихо мирно все старые файлы сессий были выкошены. <strong>Обязательно</strong> перед удалением меняйте tmp папку сессий, т.к. иначе пользователи вашего ресурса будут все сутки без конца разлогиниваться (в лучщем случае), а в худшем будут толстые дата лосы из-за вашей невнимательности. Сначала смените путь в php.ini, потом удаляйте.</p>
<p>Для Linux серверов есть хорошая статья на хабре: <a href="http://habrahabr.ru/post/152193/">http://habrahabr.ru/post/152193/</a></p>
]]></content:encoded>
			<wfw:commentRss>https://kocherov.net/ne-udalyayutsya-faylyi-sessiy-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
