<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>cotonti.com : Вопрос про static $com_cache</title>
		<link>https://www.cotonti.com</link>
		<description>Last topic posts</description>
		<generator>Cotonti</generator>
		<language>en</language>
		<pubDate>Sat, 09 May 2026 06:31:03 -0000</pubDate>

		<item>
			<title>Dayver</title>
			<description><![CDATA[<blockquote class="fp"><a href="https://www.cotonti.com/forums?m=posts&amp;q=9264&amp;d=1#47031">#47031</a> <strong>Argont: </strong>
<blockquote class="fp"><a href="https://www.cotonti.com/ru/forums?m=posts&amp;q=9264&amp;d=1#47028">#47028</a> <strong>Kopusha: </strong>
<p> </p>

<p>спасиб, на свежую голову почитаю.</p>
</blockquote>

<p><span style="color:#e74c3c;">Сообщение удалено модератором</span></p>
</blockquote>

<p>Или по существу или никак. Тут ресурс тематический потому выходить за рамки или переходить на личности здесь запрещено.</p>
]]></description>
			<pubDate>Sun, 27 Aug 2023 20:19:35 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=9264&d=0#post47032]]></link>
		</item>
		<item>
			<title>Argont</title>
			<description><![CDATA[<blockquote class="fp"><a href="https://www.cotonti.com/ru/forums?m=posts&amp;q=9264&amp;d=1#47028">#47028</a> <strong>Kopusha: </strong>
<p> </p>

<p>спасиб, на свежую голову почитаю.</p>
</blockquote>

<p><span style="color:#e74c3c;">Сообщение удалено модератором</span></p>
]]></description>
			<pubDate>Sun, 27 Aug 2023 13:27:49 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=9264&d=0#post47031]]></link>
		</item>
		<item>
			<title>Kopusha</title>
			<description><![CDATA[<p>Точно, помнил же что кто то спрашивал. А это я спрашивал)</p>

<p>спасиб, на свежую голову почитаю.</p>
]]></description>
			<pubDate>Thu, 24 Aug 2023 00:52:30 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=9264&d=0#post47028]]></link>
		</item>
		<item>
			<title>Dayver</title>
			<description><![CDATA[<blockquote class="fp"><a href="https://www.cotonti.com/forums?m=posts&amp;q=9264&amp;d=1#47024">#47024</a> <strong>Kopusha:</strong>
<p>Такой вопрос - тут создается какой то кеш static $com_cache = array();</p>

<p>...</p>

<p>Это все вроде бы понимаю, но был бы благодарен за текстовые пояснения. Это кеш для сессии? Сколько он живет? и тд</p>
</blockquote>

<p>Я думал вопрос <a href="https://www.cotonti.com/forums?m=posts&amp;q=9226">кеша через static решён</a> и закреплён <a href="https://svn.cotonti.com/forums?m=posts&amp;q=3011&amp;d=31">тут</a></p>
<p class="updated"><strong>Добавлено 15 минут спустя:</strong></p><blockquote class="fp"><a href="https://www.cotonti.com/forums?m=posts&amp;q=9264&amp;d=1#47024">#47024</a> <strong>Kopusha:</strong>
<p>Сколько он живет? и тд</p>
</blockquote>

<p>Живёт только во время текущего вызова скрипта .... только в области видимости функции внутри которой объявлен и сохраняется и доступен при повторных вызовах этой же функции в пределах пока работает скрипт ... в доках, <a href="https://www.php.net/manual/ru/language.variables.scope.php#language.variables.scope.static" rel="nofollow">ссылку</a> на которую уже ранее указывал, про это исчерпывающе с примерами расказано:</p>

<blockquote>
<h3>Использование статических (<code>static</code>) переменных<a href="https://www.php.net/manual/ru/language.variables.scope.php#language.variables.scope.static" rel="nofollow"> </a></h3>

<p>Другой важной особенностью области видимости переменной является <em>статическая</em> переменная. Статическая переменная существует только в локальной области видимости функции, но не теряет своего значения, когда выполнение программы выходит из этой области видимости. </p>
</blockquote>

<p> </p>
]]></description>
			<pubDate>Wed, 23 Aug 2023 23:12:02 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=9264&d=0#post47026]]></link>
		</item>
		<item>
			<title>Kopusha</title>
			<description><![CDATA[<pre class="brush:php;">
function cot_comments_count($ext_name, $code, $row = array())
{
	global $db, $db_com;
	static $com_cache = array();

	if (isset($com_cache[$ext_name][$code]))
	{
		return $com_cache[$ext_name][$code];
	}

	$cnt = 0;
	if (isset($row['com_count']))
	{
		$cnt = (int) $row['com_count'];
		$com_cache[$ext_name][$code] = $cnt;
	}
	else
	{
		$comments_join_columns = '';
		$comments_join_tables = '';
		$comments_join_where = '';
		/* == Hook == */
		foreach (cot_getextplugins('comments.count.query') as $pl)
		{
			include $pl;
		}
		/* ===== */
		$sql = $db-&gt;query("SELECT COUNT(*) $comments_join_columns
			FROM $db_com $comments_join_tables
			WHERE com_area = ? AND com_code = ? $comments_join_where",
			array($ext_name, $code));
		if ($sql-&gt;rowCount() == 1)
		{
			$cnt = (int) $sql-&gt;fetchColumn();
			$com_cache[$ext_name][$code] = $cnt;
		}
	}

	return $cnt;
}</pre>

<p>Собственно код из <a href="https://github.com/Cotonti/Cotonti/blob/master/plugins/comments/inc/comments.functions.php#L32C1-L71C2" rel="nofollow">мастер ветки</a></p>

<p>Такой вопрос - тут создается какой то кеш static $com_cache = array();<br />
и в него пишуться данные и если они там есть то запрос к $sql не выполняется а </p>

<p>        $cnt = (int) $row['com_count'];<br />
        $com_cache[$ext_name][$code] = $cnt;</p>

<p>а если нет то $cnt = (int) $sql-&gt;fetchColumn(); и $com_cache[$ext_name][$code] = $cnt;<br />
Это все вроде бы понимаю, но был бы благодарен за текстовые пояснения. Это кеш для сессии? Сколько он живет? и тд<br />
Заранее спасибо!</p>
]]></description>
			<pubDate>Wed, 23 Aug 2023 17:02:23 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=9264&d=0#post47024]]></link>
		</item>
	</channel>
</rss>