2010-10-31 4 views
1

Есть ли способ предотвратить кеширование определенного файла с помощью APC? Вариант использования выглядит следующим образом:Игнорировать кэширование определенного файла с помощью APC

Приложение, которое находится на облаке, которое динамически изменяет размеры (вращая вверх и вниз по мере необходимости). Скрипт config.php должен знать о новых IP-адресах, поскольку они становятся доступными или недоступными.

Поскольку эти изменения происходят достаточно часто, а файл config.php является довольно простым, было бы идеально, если бы не было необходимости беспокоиться об очистке APC только для одного файла.

Устранение одного файла из APC - это определенно возможность, но поскольку вы не можете получить доступ к APC через командную строку, решение оказывается довольно неэлегантным.

ответ

1

Да. вы должны проверить директиву apc.filter. Another Question | PHP Docs

+0

Определенно не идеальный, поскольку это системная настройка, но самый точный ответ на мой конкретный вопрос. – Owen

+0

правда, но я уверен, вы могли либо установить через htaccess, либо с помощью ini_set() – buggedcom

+0

, если документы не ошибаются, это настройка только для php.ini, к сожалению. – Owen

2

У меня есть аналогичный прецедент. Я задавал себе один и тот же вопрос много раз, и я не смог найти решение. Тем не менее, мое решение заключалось в создании быстрого сценария, который занимается очисткой кэша APC для каждого сервера. Каждый раз, когда я перестраивать приложение, мне нужно попасть в файл на каждом сервере, чтобы очистить кэш опкода с помощью apc_clear_cache Если у вас есть только очистить один файл, вы можете быть лучше с apc_compile_file

Надеется, что это помогает.

+0

Вероятно, это метод, который я буду использовать для ограничения количества операций кеша. – Owen

1

Я не знаю, как сделать то, что вы предлагаете, но вы должны уметь прокладывать себе путь вокруг него.

Очевидным решением является не хранить данные в файле php. Поскольку у вас уже есть APC, почему бы просто не хранить данные конфигурации в APC (как кэшированные данные, а не коды операций).

Так все, что изменяет config.php, теперь будет делать что-то вроде этого:

  1. Изменить некоторые без PHP файл (something.ini, или что-то подобное)
  2. Аннулируйте запись кэша APC.

Когда config.php нужны данные, он обычно считывает из кеша. Если кеш был недействителен, он считывает/анализирует данные из ini-файла, обновляет кеш и работает как обычно.

В конце дня вы используете кеш кода операции для кэширования данных. Вместо этого вы должны использовать кеш данных. К счастью, APC обеспечивает оба.

+0

Мы используем memcache для кэширования приложений. К сожалению, он недоступен в config.php, поэтому обходной путь становится немного clunkier, я думаю. Хорошая идея! – Owen

+0

Если бы можно было настроить настройку кеша в процессе начальной загрузки, memcache был бы идеальным местом для хранения этих данных. Если это невозможно, это слишком плохо. Вы могли бы рассмотреть выделение небольшого кэша данных общей памяти в каждом экземпляре APC, но с memcache в миксе, что просто кажется странным. OTOH, примечание Криса Генри о 'apc_compile_file' похоже, что оно может делать именно то, что вы хотите. – timdev

Смежные вопросы