Sinoid
Как сделать вывод статистики общего количества пользователей по каждому значению доп. поля?
21-11-2023, 01:06
Про динамические теги я сначала не понял. Но теперь сообразил, как последним сценарием foreach ($resultArray as $item) { $tpl->set('{' . $item['land'] . '}', $item['land']); $tpl->set('{' . $item['land'] . '_count}', $item['count_users']);
echo $tpl->result['stats']; } пользоваться. Мне было непонятно, как вызывать кол-во по каждой стране, тем более когда неизвестно, какие страны актуальны. Тут тогда создаваемые этим циклом теги {ZZ} не нужны. В скрипте пропишу сканирование по всем 249 тегам {ZZ_count}, которые будут выводиться в скрытый список по всем странам ZZ. Если PHP-сценарий не сформировал для страны тег {ZZ_count}, то HTML его не выводит - там вместо числа юзеров будет пусто. Затем скрипт сортирует полученные ненулевые (где вышло непустое значение) теги и распределяет по убыванию количества юзеров в таблицу линейной диаграммы.
Sinoid
Как сделать вывод статистики общего количества пользователей по каждому значению доп. поля?
21-11-2023, 00:40
rewenas, По нагрузке будет понятно уже после запуска сайта. Так что надо пробовать. Если что, потом можно отключить такую статистику. Да и запрашивать её будут далеко не все пользователи. Сервер на DLE постоянно высчитывает, например, количество просмотров каждой новости и кол-во комментариев к новости, а это гораздо бОльшая нагрузка при сотнях новостей, чем считать страны юзеров.
Sinoid
Как сделать вывод статистики общего количества пользователей по каждому значению доп. поля?
21-11-2023, 00:25
"Да не сможет ваш скрипт просканировать эти теги". Ну вот я сначала так и думал. Мне же не за что цепляться напрямую, чтобы вытащить эти данные в обработку для стилей и для диаграммы. Но теперь сообразил, что на самом деле, если в составе выдачи будут ключи кодов стран по признаку после особого символа, например, выдача будет такой строкой: '@RU: 638# @CN: 1253# @US: 920#' то скрипт сможет вытаскивать код страны между @ и : А количество юзеров страны - между : и # Просто чуть больше писать JS-кода. Но в JS есть функции работы со строками, так что решаемо. Тогда думаю, можно выводить такую выдачу в скрытое поле, чтобы оттуда обрабатывать скриптом для графической выдачи на страницу. Нужно прописать тогда новый PHP-сценарий и 1 тег в нём для выдачи такой строки. Оптимизация тогда будет в том, что сервер просчитывает только ненулевые страны и выдаёт всего 1 тег в кэш для выдачи ненулевых стран по алфавиту, а нагрузка по сортировке и графической выдаче будет на стороне пользователя. Можешь тогда такой PHP-сценарий оформить? Представим, что есть простой массив (без ключей) всех 249 кодов стран в PHP-файле: $iso_codes = ["AD", "AE", "AF", ... , "ZW"]; Напомню, именно в таком виде коды содержатся в доп. поле {land} каждого юзера, кто выбрал страну.
rewenas
Как сделать вывод статистики общего количества пользователей по каждому значению доп. поля?
21-11-2023, 00:18
"Если в PHP создать 249 тегов" Не надо создавать 249 тегов. Код создаёт один так называемый динамический тег. В который в шаблоне вы подставляете двухбуквенный код нужной вам страны и он выводит необходимый результат. Но вы же не можете знать какие страны будут у вас добавлять пользователи. Ведь так же. Поэтому логичнее будет дать возможность коду самому циклом пройтись и выбрать только те страны что пользователи уже отметили и занести все в кеш. Который с некой переодичностью очищается, следовательно данные постоянно обновляются. Вопрос лишь в нагрузке, но тут я хз