Как исправить баг Feedburner: 0 подписчиков вместо реального числа

Введение
На многих сайтах в заголовке или боковой панели показывают число подписчиков Feedburner в виде текста — например, “767 Subscribers and Counting!!”. Часто для этого используют прямой вызов API Feedburner и вывод значения как простой текст. Однако иногда счётчик Feedburner временно становится 0 перед обновлением, и посетители видят «0 подписчиков», что выглядит неловко.
Этот баг затрагивает как конвертированные в текст счётчики, так и стандартные chicklet-виджеты Feedburner. Проблема усугубляется, если у сайта включено кэширование страниц и кеш сохраняет момент, когда значение равно 0.
Причина простыми словами
Feedburner обновляет внутренние данные по расписанию. В момент переключения или обновления API может вернуть временное значение 0, пока не подставит корректное число. Это нормальное временное поведение, но вид «0» неприятен. Если результат попадает в кеш, «0» покажут многим посетителям.
Быстрое исправление (рекомендуемое)
Если вы уже используете подход, похожий на инструкцию ThemeTation (парсите XML и выводите circulation), внесите минимальное изменение в PHP-шаблон (header.php или sidebar.php).
Пример ключевых строк, которые вы ищете:
$fb = $xml->feed->entry['circulation'];
Добавьте строку сразу под ней:
$fc = "XXX"; // замените XXX на реалистичное приближённое число
Затем замените прямой вывод echo $fb
на условный вывод:
if ($fb == "0")
echo $fc;
else
echo $fb;
Код должен быть внутри PHP-тегов. Идея простая: если Feedburner вернул 0, показываем заранее заданную заглушку (примерно равную реальному числу подписчиков).
Важное: значение $fc не должно быть заведомо больше реального числа (чтобы не вводить пользователей в заблуждение). Вместо постоянной цифры можно подставлять значение из кэша или БД, обновляемое раз в сутки.
Альтернативные подходы и улучшения
- Кеширование реального значения
- При успешном получении ненулевого счётчика сохраняйте его в файл или transient (WordPress) на N часов. При 0 возвращайте сохранённое значение.
- JavaScript-замена на стороне клиента
- Загружайте число через AJAX и подменяйте содержимое. Минус: значение может быть недоступно без JS.
- Комбинация: серверная заглушка + асинхронное обновление
- Сервер показывает кеш/заглушку, а на заднем плане JS обновляет число, если API вернул актуальное значение.
- Мониторинг и оповещения
- Логируйте случаи, когда Feedburner возвращает 0 чаще обычного. Это поможет понять, это регулярный сброс или ошибка.
Когда этот трюк не сработает
- Если вы выводите число исключительно через внешний виджет Feedburner (iframe/chicklet), серверный PHP-патч не применим.
- Если вы используете сторонний плагин, который сам кэширует и перезаписывает HTML, патч нужно делать внутри плагина или отключить кэширование для блока счётчика.
- Если сайт предъявляет строгие требования к точности в реальном времени (например, счётчик на странице акции), использование статической заглушки может не подойти.
Мини‑методология внедрения (шаги)
- Найдите место вывода счётчика в шаблоне (header.php, sidebar.php или виджет).
- Добавьте линию с $fc = “XXX” или считайте значение из кеша/БД.
- Замените
echo $fb
на условный вывод. - Очистите серверный и плагинный кэш.
- Проверьте страницу в режиме инкогнито и через 3–4 часа.
- Настройте логирование аномалий (Feedburner -> 0).
Шаблон: роль‑ориентированная чек‑лист
Для разработчика:
- Найти вызов API/парсер XML.
- Добавить $fc и условный echo.
- Обернуть в функцию для переиспользования.
Для админа/контент-менеджера:
- Указать разумную стартовую заглушку ($fc).
- Настроить очистку кеша после деплоя.
- Проверять вид страницы на реальном устройстве.
Для владельца сайта:
- Решить, допустима ли небольшая погрешность в публичном отображении числа.
- Утвердить политику округления/показа заглушек.
Критерии приёмки
- На странице не отображается цифра 0 при временном сбросе Feedburner.
- Показанное число адекватно приближено к реальному и не вводит в заблуждение.
- Изменение устойчиво к кешированию страницы.
Примеры кода (вариант с кэшем для WordPress)
// Получаем актуальное значение (псевдокод)
$fb = $xml->feed->entry['circulation'];
// Сначала пробуем взять из transient
$cached = get_transient('feedburner_subs');
if ($fb != "0" && is_numeric($fb)) {
set_transient('feedburner_subs', $fb, 12 * HOUR_IN_SECONDS);
echo $fb;
} else if ($cached) {
echo $cached; // показываем последний валидный счётчик
} else {
echo '100'; // резервная заглушка, поменяйте на разумное число
}
Факты и рекомендации
- Не показывайте явно завышенное число — это снизит доверие.
- Кешируйте корректные значения, чтобы минимизировать влияние кратковременных 0.
- Если вы используете CDN или плагин кэширования, исключите блок счётчика из агрессивного кеша.
Частые вопросы
Q: Насколько безопасно подставлять заглушку?
A: Безопасно, если число реалистично и не используется для юридических/финансовых целей. Для публичного доверия лучше показывать близкую цифру или последний валидный счёт.
Q: Можно ли полностью отключить отображение, когда Feedburner возвращает 0?
A: Да — вместо числовой заглушки показывайте текст “—“ или “обновляется”. Это честно и не вводит в заблуждение.
Q: Нужно ли обновлять заглушку вручную?
A: Лучше автоматизировать: храните последнее валидное значение и обновляйте его при успешных обращениях к Feedburner.
Короткое резюме
Использование небольшой серверной заглушки или кеша решает проблему временного отображения “0” от Feedburner. Это простое и надёжное решение, совместимое с WordPress и чистыми PHP-шаблонами. Для большей устойчивости сочетайте серверную заглушку с кешированием и (по желанию) JS-обновлением на клиенте.
Важно: всегда информируйте пользователей честно — лучше показывать прошлое валидное значение или текст “обновляется”, чем завышать число.
1‑строчный глоссарий:
- Feedburner: сервис Google для управления и отслеживания подписчиков RSS/электронной почты.
Похожие материалы

Найти и удалить большие файлы на Mac

Удаление сообщений и бесед в Microsoft Teams

Photosynth на Windows 10: установка и проблемы

AirDrop на iPhone и Mac — как пользоваться и решать проблемы

Как смотреть TF1 в США — 4 способа
