Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 122 комментария

Wassi Wassinen
Wassi Wassinen
И такие ошибки:

[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
Wassi Wassinen
И выдает вот такие ошибки:

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

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

И нужно исключить возможность вот такой ошибки :)
Эта ошибка возникла из-за того, что оказался поврежден файл с таблицей БД. Причина, по которой произошла данная ситуация, вероятно, связана с каким-то сбоем на сервере. К примеру, у меня раньше часто из-за нехватки памяти падал процесс mysql, и эти падения иногда заканчивались повреждением отдельных таблиц БД, весьма часто таблицы с сессией (потому что эта таблица каждый раз при открытии любой страницы сайта обновляется), но иногда и таблиц вроде site_content. Увеличение объема памяти решило в моем случае проблему с падающим mysql и повреждением таблиц.
Wassi Wassinen
Wassi Wassinen
Как я понимаю, таблица начинает расти в прогрессии, если есть много контекстов. Так как данные пишет для каждого контекста, дублируя их. Интересно, это можно как-то оптимизировать?