Бред! А если запустить рекламную кампанию, то трафик то увеличится, страниц в кеше станет еще больше, к тому же страница может измениться, а посетителю отдается старая, это в корне не верно, вот именно по этому я и решил переложить это все на cron, благо в bitrix API очень продумано, не зря старались, в итоге поразмыслив в dev, обнаружил функцию clean_expire_cache();, которую можно как раз использовать для этого.
Итак идем по пути /bitrix/php_interface/ и init.php создаем файл, если еще не создан, если создан, то добавляем ниже следующее:
function clean_expire_cache($path = "") { if (!class_exists("CFileCacheCleaner")) { require_once ($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/cache_files_cleaner.php"); } $curentTime = mktime(); if (defined("BX_CRONTAB") && BX_CRONTAB === true) $endTime = time() + 5; //Если на кроне, то работаем 5 секунд else $endTime = time() + 1; //Если на хитах, то не более секунды //Работаем со всем кешем $obCacheCleaner = new CFileCacheCleaner("all"); if (!$obCacheCleaner->InitPath($path)) { //Произошла ошибка return "clean_expire_cache();"; } $obCacheCleaner->Start(); while ($file = $obCacheCleaner->GetNextFile()) { if (is_string($file)) { $date_expire = $obCacheCleaner->GetFileExpiration($file); if ($date_expire) { if ($date_expire < $curentTime) { unlink($file); } } if (time() >= $endTime) break; } } if (is_string($file)) { return "clean_expire_cache(\"" . $file . "\");"; } else { return "clean_expire_cache();"; } }
Далее переходим в админку bitrix и создаем агента на странице
Настройки > Настройки продукта > Агенты
Настраиваем так:
-
Функция clean_expire_cache();
-
Сортировка: 100
-
Интервал (сек): 10.
Вот и все.
Код работает циклично и возобновляется там где остановился, помимо этого предусмотрена работа на cron и на хитах. В скрипте помечен участок кода, можно изменить эти значения. Интервал также можно задать не 10 секунд, а минуту, к примеру.