Files
crm.clientright.ru/АВТОМАТИЧЕСКОЕ_ОБНОВЛЕНИЕ_КЕША_NEXTCLOUD.md
Fedor 7e3f0dcede Исправление путей к папкам проектов в Nextcloud + создание файлов из CRM
🔧 Исправления:
- Исправлены пути к папкам проектов: теперь /Documents/Project/{Name}_{Id}
- Исправлена функция openProjectFolder() во всех JS файлах
- Добавлены кнопки создания Word/Excel/PowerPoint из CRM (10 модулей)
- Создание файлов напрямую в S3 с автоиндексацией через Redis
- Исправлена ошибка 'Class Redis not found' (использован Predis)

📁 Изменённые файлы:
- layouts/v7/lib/nextcloud-editor.js
- crm_extensions/nextcloud_editor/js/nextcloud-editor.js
- layouts/v7/lib/nextcloud-editor-v3.js
- crm_extensions/file_storage/api/create_nextcloud_file.php
- layouts/v7/modules/*/DetailViewHeaderTitle.tpl (10 модулей)
- layouts/v7/modules/Documents/*.tpl (кнопки редактирования)

🎯 Результат:
- Кнопка 'Папка в Nextcloud' открывает правильную папку
- Создание файлов работает молниеносно (прямо в S3)
- Redis события публикуются корректно
- OnlyOffice открывается для редактирования

Проект 391552 теперь открывается по правильному пути!
2025-11-01 12:22:12 +03:00

8.1 KiB
Raw Blame History

🚀 АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ КЕША NEXTCLOUD

Дата: 31 октября 2025
Статус: Работает


🎯 РЕШЕНИЕ: filesystem_check_changes=0 + Redis события

Как это работает:

1. Файл загружен в S3
   ↓
2. S3 Monitor обнаруживает (через 0-30 сек)
   ↓
3. Публикует событие в Redis → crm:file:events
   ↓
4. Nextcloud Cache Updater подхватывает событие
   ↓
5. Обновляет кеш ТОЛЬКО для этого файла (БЕЗ сканирования 700 папок!)
   ↓
6. Пользователь открывает файл → Мгновенно! (1.5 сек)

📊 КОМПОНЕНТЫ СИСТЕМЫ

1. S3 Monitor (Docker)

Контейнер: s3-monitor
Статус: Up 15 hours
Что делает: Сканирует S3 каждые 30 сек, публикует в crm:file:events

2. Nextcloud Activity Monitor

PID: 2122
Статус: Работает
Что делает: Мониторит Nextcloud Activity API, публикует в crm:file:events

3. Nextcloud Cache Updater НОВЫЙ!

PID: 5166
Статус: Работает
Что делает: Слушает crm:file:events → обновляет кеш Nextcloud для конкретного файла

4. Redis CRM

Host: 147.45.146.17 (crm.clientright.ru)
Port: 6379
Password: CRM_Redis_Pass_2025_Secure!
Channel: crm:file:events

🔄 ПОЛНЫЙ ПОТОК СОБЫТИЙ

Сценарий 1: Файл загружен через CRM

CRM загружает в S3 → 
→ CRM публикует событие в Redis (instant) →
→ Nextcloud Cache Updater обновляет кеш (1-2 сек) →
→ Файл сразу виден в Nextcloud!

Задержка: 1-2 секунды

Сценарий 2: Файл загружен через Nextcloud WebUI

User → Nextcloud → S3 →
→ Nextcloud Activity Monitor видит (30 сек) →
→ Публикует в Redis →
→ Cache Updater обновляет кеш →
→ Готово!

Задержка: 30-60 секунд (уже и так в Nextcloud)

Сценарий 3: Файл загружен напрямую в S3

External tool → S3 →
→ S3 Monitor видит (0-30 сек) →
→ Публикует в Redis →
→ Cache Updater обновляет кеш (1-2 сек) →
→ Файл виден в Nextcloud!

Задержка: 1-32 секунды


ПРЕИМУЩЕСТВА

Скорость:

  • Открытие файлов: 1.3-1.7 секунды (было 25 сек)
  • Новые файлы видны: 1-30 секунд (автоматически!)
  • БЕЗ полного сканирования 700 папок

Производительность:

  • Nextcloud CPU: 0.05-5% (было 50%)
  • Нет Deadlocks
  • Обновляется только изменённый файл

Надёжность:

  • Три монитора (S3, Nextcloud Activity, Cache Updater)
  • Автоперезапуск для Docker контейнеров
  • Логи всех операций

🔧 УПРАВЛЕНИЕ КОМПОНЕНТАМИ

Nextcloud Cache Updater:

# Статус
ps aux | grep nextcloud_cache_updater

# Логи
tail -f /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/nextcloud_cache_updater.log

# Остановить
pkill -f nextcloud_cache_updater.js

# Запустить
cd /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage
nohup /usr/bin/nodejs nextcloud_cache_updater.js > nextcloud_cache_updater.log 2>&1 &

S3 Monitor:

docker logs s3-monitor -f      # Логи
docker restart s3-monitor      # Перезапуск

Nextcloud Activity Monitor:

tail -f /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/nextcloud_activity.log
pkill -f nextcloud_activity_monitor.js  # Остановить

📊 ТЕКУЩИЕ НАСТРОЙКИ

Nextcloud:

// Глобальные
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'filesystem_check_changes' => 1,  // глобально

// External Storage ID 1 (/crm)
{
  "filesystem_check_changes": 0,  // ✅ ОТКЛЮЧЕНО для S3
  "encrypt": false,                // ✅ ОТКЛЮЧЕНО
  "previews": true
}

Redis События:

Channel: crm:file:events
Publishers: S3 Monitor, Nextcloud Activity Monitor, CRM
Subscribers: Cache Updater, n8n workflows

🎯 ИТОГОВЫЙ РЕЗУЛЬТАТ

БЕЗ cron сканирования!

Теперь система ПОЛНОСТЬЮ АВТОМАТИЧЕСКАЯ:

  1. Файлы открываются быстро (1.5 сек)
  2. Новые файлы видны автоматически (1-30 сек)
  3. БЕЗ полного сканирования папок
  4. БЕЗ cron задач
  5. БЕЗ нагрузки на S3/БД

Работает как Google Drive! 🚀


🔍 МОНИТОРИНГ

Проверка работы системы:

# 1. Все процессы работают?
docker ps | grep s3-monitor
ps aux | grep nextcloud_activity_monitor
ps aux | grep nextcloud_cache_updater

# 2. События приходят?
redis-cli -h 147.45.146.17 -p 6379 -a 'CRM_Redis_Pass_2025_Secure!' \
  SUBSCRIBE crm:file:events

# 3. Кеш обновляется?
tail -f /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/nextcloud_cache_updater.log

📈 ПРОИЗВОДИТЕЛЬНОСТЬ

Операция Время Описание
Открытие для редактирования 1.3-1.7 сек Из кеша, без S3 scan
Просмотр 0.2 сек Прямая ссылка S3
Новый файл виден 1-30 сек Через Redis события
CPU Nextcloud 0.05-5% Без сканирования

🆘 TROUBLESHOOTING

Файл не появился в Nextcloud:

  1. Проверь мониторы:

    docker ps | grep s3-monitor  # Должен быть Up
    ps aux | grep nextcloud_activity_monitor  # PID 2122
    ps aux | grep nextcloud_cache_updater  # PID 5166
    
  2. Проверь события в Redis:

    redis-cli -h 147.45.146.17 -p 6379 -a 'CRM_Redis_Pass_2025_Secure!' \
      SUBSCRIBE crm:file:events
    # Загрузи файл и посмотри приходит ли событие
    
  3. Проверь логи Cache Updater:

    tail -50 /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/nextcloud_cache_updater.log
    
  4. Если не помогло - ручное сканирование:

    docker exec -u www-data nextcloud-fresh php occ files:scan --path="/admin/files/crm/$path"
    

🎉 ИТОГО

У вас теперь ИДЕАЛЬНАЯ система:

filesystem_check_changes=0 для S3 → Быстрые запросы (1.5 сек)
Redis события → Автоматическое обновление кеша
Три монитора → Покрытие всех источников файлов
Nextcloud Cache Updater → Обновление только изменённых файлов

БЕЗ:

  • Медленного сканирования 700 папок
  • Cron задач
  • Ручных обновлений

Работает быстро и автоматически! 🚀


Файлы:

  • Скрипт: /crm_extensions/file_storage/nextcloud_cache_updater.js
  • Лог: /crm_extensions/file_storage/nextcloud_cache_updater.log
  • PID: 5166

Запущено: 31.10.2025 14:46