| Kopusha |
|
|---|---|
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->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->rowCount() == 1)
{
$cnt = (int) $sql->fetchColumn();
$com_cache[$ext_name][$code] = $cnt;
}
}
return $cnt;
}
Собственно код из мастер ветки Такой вопрос - тут создается какой то кеш static $com_cache = array(); $cnt = (int) $row['com_count']; а если нет то $cnt = (int) $sql->fetchColumn(); и $com_cache[$ext_name][$code] = $cnt; |
| Dayver |
|
|---|---|
#47024 Kopusha: Я думал вопрос кеша через static решён и закреплён тут Добавлено 15 минут спустя: #47024 Kopusha: Живёт только во время текущего вызова скрипта .... только в области видимости функции внутри которой объявлен и сохраняется и доступен при повторных вызовах этой же функции в пределах пока работает скрипт ... в доках, ссылку на которую уже ранее указывал, про это исчерпывающе с примерами расказано:
Pavlo Tkachenko aka Dayver
This post was edited by Dayver (2023-08-23 23:43, 2 years ago)
|
| Kopusha |
|
|---|---|
|
Точно, помнил же что кто то спрашивал. А это я спрашивал) спасиб, на свежую голову почитаю. |
| Argont |
|
|---|---|
#47028 Kopusha: Сообщение удалено модератором иногда поржать над задравшим подбородок разработчиком
This post was edited by Dayver (2023-08-27 20:17, 2 years ago)
|
| Dayver |
|
|---|---|