beardedman
@beardedman
full stack web developer

Class 'Bitrix\Catalog\CatalogViewedProductTable' not found in agent.php?

Здравствуйте!

До сих пор ломаю головку и не могу понять: периодически у сайта вылетает fatal error
PHP Fatal error:  Class 'Bitrix\Catalog\CatalogViewedProductTable' not found in /var/www/bitrix/modules/main/classes/mysql/agent.php(162) : eval()'d code on line 1

Я думал дело в агентах, которые надо перенести на крон, но ошибка в самом скрипте вылетает.
Может кто сталкивался? Помогите, пожалуйста.
  • Вопрос задан
  • 4762 просмотра
Решения вопроса 1
beardedman
@beardedman Автор вопроса
full stack web developer
В общем я исправил проблему с этим классом, добавив отсутствующий файл (непонятно почему его не было):
<?php 
// /bitrix/modules/catalog/lib/catalogviewedproduct.php
namespace Bitrix\Catalog;
use Bitrix\Main\Config\Option; 
use Bitrix\Main\Application; 

class CatalogViewedProductTable{

public static function clearAgent()
{
  self::clear((int)Option::get('catalog', 'viewed_time'));
  return '\Bitrix\Catalog\CatalogViewedProductTable::clearAgent();';
}
public static function clear($liveTime = 10)
{
  $connection = Application::getConnection();
  $helper = $connection->getSqlHelper();
  $liveTime = (int)$liveTime;
  $liveTo = $helper->addSecondsToDateTime($liveTime * 24 * 3600, "DATE_VISIT");
  $now = $helper->getCurrentDateTimeFunction();

  $deleteSql = "delete from b_catalog_viewed_product where ".$now." > ".$liveTo;
  $connection->query($deleteSql);
}
}
?>

Спасибо DevMan за помощь.
https://bxapi.ru - очень помог ресурс. Если у вас чего не хватает - посмотрите на этом сайте информацию об этом классе и в каком файле он объявляется.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Возможно, в каком-то агенте нехватает CModule::IncludeModule('catalog').
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы