Forums / National / Russian / Тех. поддержка / Подскажите по $com_cache

Kopusha
#1 2023-04-30 06:31

Расскажите как вот это работает простыми словами.

https://github.com/Cotonti/Cotonti/blob/master/plugins/comments/inc/comments.functions.php#L37

Заранее спасибо)

Dayver
#2 2023-04-30 22:58

Как мне кажется если прочитать док по статическим переменным то должно стать понятно что это некий намёк на кеширование количества коммеyтаhиев, например к page, в пределах генерации одной страницы сайта.

Допустим у вас на сайте есть одна страница на которой выводятся списки(например новостей) и на этой странице таких списков может быть много\несколько (например на разные темы), но одна и та же новость может попасть в каждый из этих списков, а значит при построении каждого списка, при генерации тегов к каждой новости в этом списке будет происходить подсчёт количества комментариев к этой новости. Так вот что бы такой подсчёт происходил только во время первого вызова функции cot_comments_count (при построении первого списка) для этой одной конкретно новости, а при последующих вызовах этой же функции (построении остальных списков) для этой новости, число комментариев уже не будет расчитыватся, а будет возвращено из статического массива который виден только внутри функции и существует только пока скрипт работает (при повторных вызовах этой страницы переменная-массив будет пересоздаватся с нуля).

Если без терминологии то, допусти на странице 10 списков и одна новость попадает в каждый из них, то подсчёт комментариев для этой новости будет произведен только когда формировался первый список (вызывалась функция впервые для этой новости), а при построении остальных девяти списков подсчёта уже не будет, а только лишь вывод из аля кеша (при повторных вызовах функции для этой новости). Если же вы перезагрузите страничку с этими списками новостей то процесс повторится (расчёт количества при первом вызове и возвращение из кеша при остальных девяти) поскольку значение статической переменной не передаётся между разными вызовами скрипта.

Ну а проверка которая осущствяется конкретно в указанной строке как раз и служит для того что бы проверить существует ли запись в этом статическом массиве к указанной новости. Если существует то значит значение количества комментариев уже подсчитывалось во время генерации текущей страницы и можно его вернуть и выйти. А если не существует то далее по коду произвести расчёт, сохранить в статическом массиве и выйти из функции вернув это значение.

Постарался попроще и как можно более простыми словами но детально обьяснить как это должно работать.

Pavlo Tkachenko aka Dayver

Dit bericht is bewerkt door Dayver (2023-05-01 03:02, 12 maanden ago)
Kopusha
#3 2023-05-01 09:23

Спасибо дружище) Это даже слишком простыми словами)

Я чего спросил - я не понял сходу где именно сам кеш хранится -  я̶ ̶н̶е̶ ̶н̶а̶с̶т̶о̶я̶щ̶и̶й̶ ̶с̶в̶а̶р̶щ̶и̶к̶ кодер, а теперь ясно - создалась при выполнении php кода статическая переменная, и без перезагрузки стр она уже есть.