AbortDataCache
void public CPHPCache::AbortDataCache();
Метод отменяет запись данных в кеш после вызова StartDataCache. Метод нестатический.
AbortDataCache используют, когда блок кеширования уже открыт, но результат нельзя сохранять: данные не получены, ответ содержит ошибку или дальнейшее выполнение сценария должно завершиться без создания кеша. Метод закрывает текущий сеанс кеширования и не вызывает запись через EndDataCache.
Параметры вызова
Метод не принимает параметров.
Возвращаемое значение
Метод не возвращает значение.
Особенности
- Метод действует только для текущего объекта CPHPCache и текущего блока, начатого через StartDataCache.
- Если кеширование не было начато, метод завершает работу без дополнительных действий.
- Если для объекта кеша включен вывод, метод закрывает буфер вывода через ob_end_flush. Уже сформированный вывод будет отправлен, но не будет сохранен в кеш.
- После вызова AbortDataCache не вызывайте EndDataCache для того же блока: запись уже отменена.
Смотрите также
- InitCache и GetVars используют, чтобы проверить кеш и получить сохраненные данные.
- StartDataCache вызывают перед формированием данных, которые можно сохранить в кеш.
- EndDataCache вызывают вместо AbortDataCache, когда результат нужно записать в кеш.
Примеры
Отмена записи в кеш, если данные для блока не получены. Если открыть страницу с параметром ?empty=Y, пример вызовет AbortDataCache и не создаст кеш. Если открыть страницу без параметра, результат запишется в кеш на 60 секунд, и время в строке товара не изменится до истечения TTL.
$cache = new CPHPCache();
$cacheTime = 60;
$cacheId = 'abort_data_cache_example';
$cacheDir = '/abort_data_cache_example';
$items = [];
$fromCache = false;
if ($cache->InitCache($cacheTime, $cacheId, $cacheDir))
{
$items = $cache->GetVars();
$fromCache = true;
}
elseif ($cache->StartDataCache($cacheTime, $cacheId, $cacheDir))
{
// Для проверки отмены кеширования добавьте к URL параметр ?empty=Y
$items = (isset($_GET['empty']) && $_GET['empty'] === 'Y')
? []
: [
['ID' => 1, 'NAME' => 'Товар для примера', 'TIME' => date('H:i:s')],
];
if (empty($items))
{
$cache->AbortDataCache();
}
else
{
$cache->EndDataCache($items);
}
}
echo $fromCache ? 'Данные получены из кеша<br>' : 'Данные сформированы заново<br>';
if (!empty($items))
{
foreach ($items as $item)
{
echo htmlspecialcharsbx($item['NAME']) . ': ' . htmlspecialcharsbx($item['TIME']) . '<br>';
}
}
else
{
echo 'Данные не получены и не записаны в кеш<br>';
}
© «Битрикс», 2001-2026, «1С-Битрикс», 2026