<?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; php</title>
	<atom:link href="https://kocherov.net/tag/php/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>SSL3_GET_RECORD: decryption failed or bad record mac</title>
		<link>https://kocherov.net/ssl3_get_record-decryption-failed-or-bad-record-mac/</link>
		<comments>https://kocherov.net/ssl3_get_record-decryption-failed-or-bad-record-mac/#comments</comments>
		<pubDate>Wed, 29 Jan 2014 03:46:23 +0000</pubDate>
		<dc:creator>Pavel Kocherov</dc:creator>
				<category><![CDATA[Работа]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://kocherov.net/?p=404</guid>
		<description><![CDATA[Если у вас возникает ошибка SSL3_GET_RECORD: decryption failed or bad record mac при работе со сторонним сервером через SSL &#8212; попробуйте переключить SSL в версию 2 или 3 вручную. Для PHP CURL: curl_setopt($ch, CURLOPT_SSLVERSION, 2); или curl_setopt($ch, CURLOPT_SSLVERSION, 3);]]></description>
				<content:encoded><![CDATA[<p>Если у вас возникает ошибка <em>SSL3_GET_RECORD: decryption failed or bad record mac</em> при работе со сторонним сервером через SSL &#8212; попробуйте переключить SSL в версию 2 или 3 вручную. Для PHP CURL:<br />
<code>curl_setopt($ch, CURLOPT_SSLVERSION, 2);</code><br />
или<br />
<code>curl_setopt($ch, CURLOPT_SSLVERSION, 3);</code></p>
]]></content:encoded>
			<wfw:commentRss>https://kocherov.net/ssl3_get_record-decryption-failed-or-bad-record-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php preg_match длинные строки</title>
		<link>https://kocherov.net/php-preg_match-dlinnyie-stroki/</link>
		<comments>https://kocherov.net/php-preg_match-dlinnyie-stroki/#comments</comments>
		<pubDate>Fri, 10 May 2013 05:17:25 +0000</pubDate>
		<dc:creator>Pavel Kocherov</dc:creator>
				<category><![CDATA[Работа]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://kocherov.net/?p=229</guid>
		<description><![CDATA[Если при работе с длинной строкой регулярное выражение возвращает false вместо результата &#8212; добавьте]]></description>
				<content:encoded><![CDATA[<p>Если при работе с длинной строкой регулярное выражение возвращает false вместо результата &#8212; добавьте</p>
<pre class="brush: php; title: ; notranslate">
ini_set('pcre.backtrack_limit', '5000000');
</pre>
]]></content:encoded>
			<wfw:commentRss>https://kocherov.net/php-preg_match-dlinnyie-stroki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>simple_html_dom утечка памяти</title>
		<link>https://kocherov.net/simple_html_dom-utechka-pamyati/</link>
		<comments>https://kocherov.net/simple_html_dom-utechka-pamyati/#comments</comments>
		<pubDate>Mon, 29 Apr 2013 06:25:56 +0000</pubDate>
		<dc:creator>Pavel Kocherov</dc:creator>
				<category><![CDATA[Работа]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[simple_html_dom]]></category>
		<category><![CDATA[парсинг]]></category>

		<guid isPermaLink="false">http://kocherov.net/?p=225</guid>
		<description><![CDATA[Если при работе с simple_html_dom вы получаете следующую ошибку: Fatal error: Allowed memory size of bytes exhausted, значит, скорее всего, вы забыли после работы с отдельной страницей выполнить $html->clear(); Пример:]]></description>
				<content:encoded><![CDATA[<p>Если при работе с simple_html_dom вы получаете следующую ошибку: <strong>Fatal error: Allowed memory size of  bytes exhausted</strong>, значит, скорее всего, вы забыли после работы с отдельной страницей выполнить <strong>$html->clear()</strong>;</p>
<p>Пример:</p>
<pre class="brush: php; title: ; notranslate">
$html = file_get_html($url);
foreach($html-&gt;find('div[class=posts]') as $element){
    foreach($element-&gt;find('img') as $el){
      // do smth
    }
}
$html-&gt;clear();
unset($html);
</pre>
]]></content:encoded>
			<wfw:commentRss>https://kocherov.net/simple_html_dom-utechka-pamyati/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
