PHPackages                             arrilot/bitrix-cacher - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Caching](/categories/caching)
4. /
5. arrilot/bitrix-cacher

AbandonedArchivedLibrary[Caching](/categories/caching)

arrilot/bitrix-cacher
=====================

3.0.2(6y ago)1912.2k↓34.4%61MITPHPPHP &gt;=5.4.0

Since Aug 20Pushed 5y ago3 watchersCompare

[ Source](https://github.com/arrilot/bitrix-cacher)[ Packagist](https://packagist.org/packages/arrilot/bitrix-cacher)[ Docs](https://github.com/Arrilot/bitrix-cacher)[ RSS](/packages/arrilot-bitrix-cacher/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)DependenciesVersions (17)Used By (1)

[![Latest Stable Version](https://camo.githubusercontent.com/7a75c78fb6009c326962aeab3445fb05b3d9c6f0475c5e87cccb6fffce7cc199/68747470733a2f2f706f7365722e707567782e6f72672f617272696c6f742f6269747269782d6361636865722f762f737461626c652e737667)](https://packagist.org/packages/arrilot/bitrix-cacher/)

Данный пакет больше активно не поддерживается
=============================================

[](#данный-пакет-больше-активно-не-поддерживается)

Причина - мы больше не используем Битрикс в своих проектах. Если вам интересен этот проект и вы хотите заняться его поддержкой - форкните его и создайте Issue в данном репозитории чтобы мы поместили здесь ссылку на форк.

Bitrix Cacher - обёртка над ядром Bitrix для более удобного кэширования PHP-переменных
======================================================================================

[](#bitrix-cacher---обёртка-над-ядром-bitrix-для-более-удобного-кэширования-php-переменных)

Установка
---------

[](#установка)

1. `composer require arrilot/bitrix-cacher`
2. Регистрируем пакет в `init.php` - `Arrilot\BitrixCacher\ServiceProvider::register();`

Использование
-------------

[](#использование)

### Через метод

[](#через-метод)

```
use Arrilot\BitrixCacher\Cache;
use Arrilot\BitrixCacher\AbortCacheException;

$result = Cache::remember('cacheKeyHere', 3600, function () {
    $result = 0;
    for ($i = 0; $i < 20000000; $i++) {
        $result += $i;
    }

    if ( // something bad happened ) {
        // выполнит $obCache->AbortDataCache() и вернёт null в качестве $result
        throw new AbortCacheException();
    }

    return $result;
});
```

Для удобства рекомендуется добавить глобальный хэлпер:

```
/**
 * @param null|string $key
 * @param null|int $seconds
 * @param null|Closure $callback
 * @param string $initDir
 * @param string $basedir
 * @return \Arrilot\BitrixCacher\CacheBuilder|mixed
 */
function cache($key = null, $seconds = null, $callback = null, $initDir = '/', $basedir = 'cache')
{
    if (func_num_args() === 0) {
        return new \Arrilot\BitrixCacher\CacheBuilder();
    }

    return \Arrilot\BitrixCacher\Cache::remember($key, $seconds, $callback, $initDir, $basedir);
}
```

и использовать его либо вместо `Cache::remember()`, либо как начало цепочки построения кэша CacheBuilder-а

Обратите внимание, что в отличии от `CPHPCache::InitCache()` (и его аналога из d7) по-умолчанию `$initDir = '/'`, а не false. Это значит, что по-умолчанию кэш доступен для всего сайта.

### Через CacheBuilder

[](#через-cachebuilder)

```
$result = cache()
    ->key('cacheKeyHere')
    ->seconds(3600) // также доступны методы minutes(), hours(), days()
    ->initDir('/foo') // можно опустить если хотим использовать значение по-умолчанию
    ->baseDir('cache/foo') // можно опустить если хотим использовать значение по-умолчанию
    ->execute(function () {
        ...
        return ...;
    });
```

### Кэширование в php-переменную

[](#кэширование-в-php-переменную)

В случаях, когда возможен многократный вызов одного и того же кэша (т.е. с одними и теми же параметрами key, initDir, baseDir) в течение выполнения одного скрипта, разумно добавлять дополнительное кэширование в php переменную, чтобы не дергать внешнее хранилище с кэшем (файлы, memcache и т д) просто так несколько раз. С использованием CacheBuilder это сделать очень просто - надо добавить `->enablePhpLayer()` в цепочку построения кэша.

```
$result = cache()
    ->key('cacheKeyHere')
    ->seconds(3600)
    ->enablePhpLayer()
    ->execute(function () {
        ...
        return ...;
    });
```

Если есть потребность кэшировать вообще только в php-переменную (не трогая внешнее хранилище), то это делается вот так:

```
$result = cache()
    ->key('cacheKeyHere')
    ->onlyPhpLayer()
    ->execute(function () {
        ...
        return ...;
    });
```

Время кэширования в этом случае уже, конечно, не имеет смысла.

### Аборт кэша

[](#аборт-кэша)

Если вы хотите отменить создание кэша в execute, то необходимо выкинуть исключение Arrilot\\BitrixCacher\\AbortCacheException Цепочка execute при этом вернёт null, это значение можно изменить при помощи `->whenAbort([])->` или `->whenAbort(function () { return 'some message'; })->`

### Отладка

[](#отладка)

Пакет предоставляет дополнительное окно отладки в котором можно посмотреть

- сколько и каких мы сделали запросов в кэш,
- сколько хитов,
- сколько мисов,
- сколько запросов с нулевым TTL и которые не кэшируются, соответственно, вообще

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity35

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 81.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~96 days

Recently: every ~87 days

Total

16

Last Release

2478d ago

Major Versions

0.1.0 → 1.0.02015-08-21

1.3.0 → 2.0.02017-06-25

2.3.2 → 3.0.02019-04-17

### Community

Maintainers

![](https://www.gravatar.com/avatar/58d505cd6b2551974b0c076d133fd9a3c9cd635bbf308adb17a6399bd3b63232?d=identicon)[Arrilot](/maintainers/Arrilot)

---

Top Contributors

[![arrilot](https://avatars.githubusercontent.com/u/2826480?v=4)](https://github.com/arrilot "arrilot (9 commits)")[![DimionX](https://avatars.githubusercontent.com/u/7352966?v=4)](https://github.com/DimionX "DimionX (2 commits)")

---

Tags

bitrixcache

### Embed Badge

![Health badge](/badges/arrilot-bitrix-cacher/health.svg)

```
[![Health](https://phpackages.com/badges/arrilot-bitrix-cacher/health.svg)](https://phpackages.com/packages/arrilot-bitrix-cacher)
```

###  Alternatives

[psr/simple-cache

Common interfaces for simple caching

8.1k727.3M2.1k](/packages/psr-simple-cache)[psr/cache

Common interface for caching libraries

5.2k686.9M1.3k](/packages/psr-cache)[react/cache

Async, Promise-based cache interface for ReactPHP

444112.4M40](/packages/react-cache)[beste/in-memory-cache

A PSR-6 In-Memory cache that can be used as a fallback implementation and/or in tests.

2512.2M6](/packages/beste-in-memory-cache)[anahkiasen/flatten

A package for the Illuminate framework that flattens pages to plain HTML

33313.0k](/packages/anahkiasen-flatten)[webarchitect609/bitrix-cache

Comfortable fluent interface for Bitrix cache. Anti-stampede cache protection.

2831.2k8](/packages/webarchitect609-bitrix-cache)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
