Блог веб-разработчика v 1.0.0
Symfony2, AngularJS, React, Gulp, PhpStorm и много других страшных слов

Очистка APC кеша в Symfony2

10 лет назад
5319 просмотров
APC PHP PHP Frameworks Symfony2 Полезности

Если вы читаете эту статью, то наверняка знаете что такое APC и, скорее всего, сталкивались с невозможностью очистить кеш когда это необходимо. В сети есть некоторый способ, который сводится к вызову функции apc_clear_cache() с различными недокументированными параметрами, но в реальности он работает не везде. У вас может быть специфическая среда выполнения или PHP может работать как CGI, и все это накладывает отпечаток на работу данной функции.

Представленный банд избавляет нас от всех вышеописанных проблем и все сводится к единственной консольной команде.

Установка (через composer)

Как обычно добавляем бандл в composer.json и производим обновление: 

"ornicar/apc-bundle": "1.0.*"

Дальше добавляем бандл в AppKernel.php нашего проекта:

// app/AppKernel.php
public function registerBundles()
{
   return array(
       // ...
       new Ornicar\ApcBundle\OrnicarApcBundle(),
       // ...
   );
}

А так же добавляем секцию ornicar_apc в наш config.yml:

# app/config/config.yml
ornicar_apc:
    host: http://example.com            # Ссылка на сайт
    web_dir: %kernel.root_dir%/../web   # Полный путь к веб-корню сайта. Скорее всего вам не придется менять это значение.
    mode: curl                          # Только если нужно использовать curl вместо fopen для доступа к сайту

Важное условие - сайт должен быть свободно доступен. Например защита http-авторизацией не позволит нам очистить APC кеш.

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

$ php app/console apc:clear          # Полная очистка кеша
$ php app/console apc:clear --opcode # Очистка только кеша опкода
$ php app/console apc:clear --user   # Очистка только пользовательского кеша
$ php app/console apc:clear --cli    # Очистка опкода и пользовательского кеша

Проект на GitHub: https://github.com/ornicar/ApcBundle

Что еще почитать