Всего 123 786 комментариев

Наумов Алексей
26 февраля 2024, 17:28
0
Я вообще зачем дополнение сделал:
У моего сайта была посещаемость 300 человек в сутки. В неделю это 7*300=2100 человек. Сессии как раз неделю и хранились. Вот только в таблице сессий было не 2000 записей, как было бы ожидаемо, а около 100-200 тысяч. Когда я начал изучать вопрос — боты, одни боты! яндекс, гугл, просто wget какие-то, индексаторы картинок, парсеры… чего только не было) и что забавное — почти всегда каждый запрос генерил новую сессию, боты не держали её)) а итоге приходит яндекс бот на сайт, индексирует сайт, 3000 страниц — о-ппа и +3000 сессий. А кому они нужны?)
Наумов Алексей
26 февраля 2024, 17:23
0
Поле access есть: см. исходники.

… таблица начинает расти в прогрессии, если есть много контекстов
В этом дополнении нет ничего нового, связанного с контекстами, по сравнению со стандартным sessionhandler. Основная цель дополнения — расширить таблицу сессий, чтобы в ней хранился user-agent. И если user-agent принадлежит боту — чистить такие сессии раньше, не хранить их долго.

И нужно исключить возможность вот такой ошибки :)
Эта ошибка возникла из-за того, что оказался поврежден файл с таблицей БД. Причина, по которой произошла данная ситуация, вероятно, связана с каким-то сбоем на сервере. К примеру, у меня раньше часто из-за нехватки памяти падал процесс mysql, и эти падения иногда заканчивались повреждением отдельных таблиц БД, весьма часто таблицы с сессией (потому что эта таблица каждый раз при открытии любой страницы сайта обновляется), но иногда и таблиц вроде site_content. Увеличение объема памяти решило в моем случае проблему с падающим mysql и повреждением таблиц.
Wassi Wassinen
26 февраля 2024, 16:12
0
И ещё вопрос: как дополнение понимает когда чистить таблицу — нет поля для хранения даты создания сессии. Или я как-то неправильно понял механизм работы?
Wassi Wassinen
26 февраля 2024, 15:47
0
Как я понимаю, таблица начинает расти в прогрессии, если есть много контекстов. Так как данные пишет для каждого контекста, дублируя их. Интересно, это можно как-то оптимизировать?
Артур Шевченко
26 февраля 2024, 15:22
0
{set $menu = 'mySnippet' | snippet}
{foreach $menu as $parent => $products}
    <p>{$parent}</p>
    <ul>
    {foreach $products as $data}
        <li>{$data.name} - {$data.price}</li>
    {/foreach}
    </ul>
{/foreach}
Артур Шевченко
26 февраля 2024, 15:15
0
Покажи вызов сниппета и чанк с этим ТВ
Артур Шевченко
26 февраля 2024, 15:14
0
У тебя капча на всех страницах или на одной?
Wassi Wassinen
26 февраля 2024, 14:27
0
И нужно исключить возможность вот такой ошибки :)

Дмитрий
26 февраля 2024, 12:44
0
Спасибо за сниппет. Не могли бы вы пояснить как вывести то, что мне нужно? У меня не получается вывести.
ЦНТБ
26 февраля 2024, 10:48
0
Имеешь ввиду само изображение? То точно нет
Павел Голубев
26 февраля 2024, 10:47
+1
По cron поставить очистку таблицы
Артур Шевченко
26 февраля 2024, 09:05
0
Возможно дело в источнике файлов, который не подставляется при выводе.
weranda
26 февраля 2024, 09:03
0
А как и откуда его получить, чтобы этот код корректно завелся?
Иван Бочкарев
26 февраля 2024, 06:41
0
Поправил пост
Андрей
25 февраля 2024, 21:37
+1
Для каких целей это нужно? 3й шопкипер выпущен 7 лет назад, давно не поддерживается и имеет достаточно много проблем. Если уже и переносить, то в минишоп =)
Артур Шевченко
25 февраля 2024, 21:36
0
И под cut портянку убери.
Артур Шевченко
25 февраля 2024, 21:35
0
Ты бы код в соответствующий тег обернул что ли, читать же невозможно.
Артур Шевченко
25 февраля 2024, 21:34
0
// отправляют данные в обработчик
            fetch("request_response.php", {
                "method": "POST",
                "headers": {
                    "Content-Type": "application/json; charset=utf-8"
                },
                    "body": JSON.stringify(data)
                }).then(function(data) {
                    console.log(data);
                    if (data["passed"] == "passed") {
                        // если капча пройдена, то перезагружаю страницу
                        window.location.reload();
                    }
                })
Тут вместо перезагрузки вставляй в новый контент из data.