Всего 123 793 комментария

Wassi Wassinen
26 февраля 2024, 20:29
0
И такие ошибки:

[2024-02-26 20:25:30] (ERROR @ /www/core/xpdo/xpdo.class.php : 988) xPDO->removeCollection - Error deleting smartSession instances using query DELETE FROM `modx_smart_sessions` WHERE  ( `modx_smart_sessions`.`access` < '1708957438' AND `modx_smart_sessions`.`user_agent` LIKE '%YandexMarket%' )  
[2024-02-26 20:25:42] (ERROR @ /www/core/xpdo/xpdo.class.php : 988) xPDO->removeCollection - Error deleting smartSession instances using query DELETE FROM `modx_smart_sessions` WHERE  ( `modx_smart_sessions`.`access` < '1708957460' AND `modx_smart_sessions`.`user_agent` LIKE '%YandexTurbo%' )  
[2024-02-26 20:25:53] (ERROR @ /www/core/xpdo/xpdo.class.php : 988) xPDO->removeCollection - Error deleting smartSession instances using query DELETE FROM `modx_smart_sessions` WHERE  ( `modx_smart_sessions`.`access` < '1708957502' AND `modx_smart_sessions`.`user_agent` LIKE '%YandexBot%' )  
[2024-02-26 20:25:56] (ERROR @ /www/core/xpdo/xpdo.class.php : 988) xPDO->removeCollection - Error deleting smartSession instances using query DELETE FROM `modx_smart_sessions` WHERE  ( `modx_smart_sessions`.`access` < '1708957420' AND `modx_smart_sessions`.`user_agent` LIKE '%DataForSeoBot%' )
Wassi Wassinen
26 февраля 2024, 20:12
0
И выдает вот такие ошибки:

[2024-02-26 19:43:34] (ERROR in xPDOConnection::connect @ /www/core/xpdo/xpdo.class.php : 3125) SQLSTATE[HY000] [2002] No such file or directory
[2024-02-26 19:43:34] (ERROR @ /www/core/xpdo/om/xpdoobject.class.php : 263) Error preparing statement for query: SELECT `smartSession`.`id` AS `smartSession_id`, `smartSession`.`access` AS `smartSession_access`, `smartSession`.`ip` AS `smartSession_ip`, `smartSession`.`user_id` AS `smartSession_user_id`, `smartSession`.`user_agent` AS `smartSession_user_agent`, `smartSession`.`data` AS `smartSession_data` FROM `modx_smart_sessions` AS `smartSession` WHERE `smartSession`.`id` = ?  - 
[2024-02-26 19:43:34] (ERROR in xPDOConnection::connect @ /www/core/xpdo/xpdo.class.php : 3125) SQLSTATE[HY000] [2002] No such file or directory
[2024-02-26 19:43:34] (ERROR in xPDOConnection::connect @ /www/core/xpdo/xpdo.class.php : 3125) SQLSTATE[HY000] [2002] No such file or directory
[2024-02-26 19:43:34] (ERROR @ Unknown0) PHP warning: Unknown: Failed to write session data using user defined save handler. (session.save_path: /var/lib/php/sessions)
Wassi Wassinen
26 февраля 2024, 19:22
0
Благодарю за ответ. У вас эти настройки PHP (gc) как выставлены?
Наумов Алексей
26 февраля 2024, 19:18
0
Ну а сигнатуры то ботов нужных прописаны в настройках (smartsessions_bot_signatures)?
Это довольно индивидуальный параметр для каждого сайта. Если не очищается совсем — то gc не работает в php, с ним нужно копать, вот чтиво десятилетней давности: bezumkin.ru/sections/tips_and_tricks/2422
Wassi Wassinen
26 февраля 2024, 18:23
0
Алексей, а что делать, если таблица не очищается от сессий ботов? Хотя для ботов стоит время 10800.
Wassi Wassinen
26 февраля 2024, 18:23
0
Да, полностью согласен с этим. Компонент нужный. Вы молодец :))
Наумов Алексей
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 поставить очистку таблицы