2010-09-19 3 views
1

Мы используем кеш пользователя APC в нашем приложении, но я начал замечать различные проблемы в наших модульных тестах, специально связанных с тестами APC.PHP APC с ошибкой в ​​модульных тестах

Похоже, что в конечном итоге APC начинает не сохранять и получать результаты; в то время как большинство тестов продолжают работать корректно (поскольку они просто восстанавливают данные, если они не восстанавливаются из кеша), тесты, которые специально проверяют, что кеши опустошены или повторно заселены, когда они будут терпеть неудачу, что несколько раздражает. Те же тесты выполняются нормально, если они выполняются изолированно, а не как часть всего набора тестов).

Вопросы

  • Кто-нибудь еще была подобные проблемы? Похоже, я не могу найти многого на этом с помощью google, кроме проблем с модулями тестирования slam_defence, которые, похоже, не являются моей проблемой, поскольку для меня не отображаются сообщения об ошибках.
  • Кто-нибудь знает, как получить дополнительную информацию об отладке из APC? Я обнаруживаю сбой, проверяя код возврата apc_store() и передавая дополнительный параметр успеха apc_fetch(), но все, что я получаю от этого, является логическим статусом успеха/отказа; никаких подробностей, на которых я могу следить.

ответ

2

Я предполагаю, что, возможно, кеш заполнен. В вашем приложении это то, над чем вы должны справиться (никогда не предполагайте, что элементы существуют в кеше). Я не знаю, как APC кэширует или истекает, так что странно, что «позже материал» не сохраняется.

В случае ваших unittests вызовет apc_clear_cache ('user') для каждой тестовой работы?

+0

Это хорошая мысль, но для обеспечения того, чтобы состояние было одинаковым для каждого теста, мы уже вызываем apc_clear_cache ('user') в вызове setUp для каждого теста. –

+0

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

+0

На самом деле, оказывается, вы были более-менее правильными. Проблема возникает из-за того, что кеш заполнен, несмотря на наши попытки его очистить. Вызов apc_clear_cache не освобождает память; даже вызов apc_delete на каждый элемент не освобождает память. Есть идеи об этом? –