Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
110 lines
6.1 KiB
PHP
110 lines
6.1 KiB
PHP
<?php
|
||
/**
|
||
* Проверка: что кешируется в Redis и что используется при открытии папок
|
||
*/
|
||
|
||
error_reporting(E_ALL);
|
||
ini_set('display_errors', 1);
|
||
|
||
echo "=== ЧТО КЕШИРУЕТСЯ В REDIS ===\n\n";
|
||
|
||
$redis = new Redis();
|
||
$redis->connect('147.45.146.17', 6379);
|
||
$redis->auth('CRM_Redis_Pass_2025_Secure!');
|
||
|
||
// 1. Что есть в Redis сейчас
|
||
echo "1️⃣ ЧТО ИНДЕКСИРУЕТСЯ В REDIS (каждую минуту):\n";
|
||
echo "────────────────────────────────────────────────────────────────────────────\n";
|
||
|
||
$keys = $redis->keys('crm:nc:fileid:*');
|
||
echo " 📊 Всего записей: " . count($keys) . "\n\n";
|
||
|
||
// Примеры ключей
|
||
echo " 📋 Примеры ключей:\n";
|
||
$sampleKeys = array_slice($keys, 0, 5);
|
||
foreach ($sampleKeys as $key) {
|
||
$value = $redis->get($key);
|
||
$data = json_decode($value, true);
|
||
echo " - $key\n";
|
||
echo " fileId: {$data['fileId']}, name: {$data['name']}\n";
|
||
}
|
||
|
||
echo "\n ✅ ЧТО ЭТО: Индекс fileId для ОТДЕЛЬНЫХ ФАЙЛОВ\n";
|
||
echo " Используется для: Открытие конкретного файла\n";
|
||
echo " НЕ используется для: Открытие папки (список файлов)\n\n";
|
||
|
||
// 2. Что происходит при открытии папки
|
||
echo "2️⃣ ЧТО ПРОИСХОДИТ ПРИ ОТКРЫТИИ ПАПКИ:\n";
|
||
echo "────────────────────────────────────────────────────────────────────────────\n";
|
||
|
||
$testFolder = '/crm/crm2/CRM_Active_Files/Documents/Project';
|
||
echo " 📁 Открываем папку: $testFolder\n\n";
|
||
|
||
echo " Шаг 1: Nextcloud делает PROPFIND запрос к S3\n";
|
||
echo " \"Дай мне список ВСЕХ файлов в этой папке\"\n";
|
||
echo " ⏱️ Время: 2-5 секунд\n\n";
|
||
|
||
echo " Шаг 2: S3 возвращает XML со списком файлов:\n";
|
||
echo " <?xml>\n";
|
||
echo " <file1>...</file1>\n";
|
||
echo " <file2>...</file2>\n";
|
||
echo " ... (может быть 100+ файлов)\n";
|
||
echo " </xml>\n\n";
|
||
|
||
echo " Шаг 3: Nextcloud парсит XML и показывает список\n\n";
|
||
|
||
echo " ❌ ПРОБЛЕМА: Этот PROPFIND запрос НЕ кешируется!\n";
|
||
echo " Каждый раз при открытии папки - новый запрос к S3\n\n";
|
||
|
||
// 3. Проверяем, есть ли кеш для папок
|
||
echo "3️⃣ ЕСТЬ ЛИ КЕШ ДЛЯ ПАПОК (PROPFIND результаты)?\n";
|
||
echo "────────────────────────────────────────────────────────────────────────────\n";
|
||
|
||
$propfindKeys = $redis->keys('propfind:*');
|
||
echo " 📊 Ключей с префиксом 'propfind:': " . count($propfindKeys) . "\n";
|
||
|
||
if (count($propfindKeys) == 0) {
|
||
echo " ❌ Кеш для папок НЕ используется!\n";
|
||
echo " PROPFIND результаты НЕ кешируются\n\n";
|
||
} else {
|
||
echo " ✅ Кеш для папок есть!\n";
|
||
echo " Примеры:\n";
|
||
foreach (array_slice($propfindKeys, 0, 3) as $key) {
|
||
echo " - $key\n";
|
||
}
|
||
}
|
||
|
||
// 4. Разница
|
||
echo "4️⃣ РАЗНИЦА МЕЖДУ ТЕМ ЧТО ЕСТЬ И ЧТО НУЖНО:\n";
|
||
echo "────────────────────────────────────────────────────────────────────────────\n";
|
||
|
||
echo " ✅ ЧТО ЕСТЬ (индексируется каждую минуту):\n";
|
||
echo " crm:nc:fileid:crm2/.../file.pdf => fileId\n";
|
||
echo " Используется для: Открытие КОНКРЕТНОГО файла\n";
|
||
echo " Пример: Открыть файл \"документ.pdf\" → берем fileId из Redis → быстро!\n\n";
|
||
|
||
echo " ❌ ЧТО НЕТ (но нужно для папок):\n";
|
||
echo " propfind:/crm/.../Project/ => список всех файлов в папке\n";
|
||
echo " Используется для: Открытие ПАПКИ (список файлов)\n";
|
||
echo " Пример: Открыть папку \"Project\" → PROPFIND к S3 → медленно!\n\n";
|
||
|
||
// 5. Решение
|
||
echo "5️⃣ РЕШЕНИЕ:\n";
|
||
echo "────────────────────────────────────────────────────────────────────────────\n";
|
||
|
||
echo " 💡 Кешировать результаты PROPFIND запросов для папок:\n";
|
||
echo " - При открытии папки проверять кеш в Redis\n";
|
||
echo " - Если есть - брать из кеша (0.01 сек)\n";
|
||
echo " - Если нет - делать PROPFIND, кешировать (TTL 5 минут)\n";
|
||
echo " - При добавлении/удалении файла - очищать кеш папки\n\n";
|
||
|
||
echo " 📊 ОЖИДАЕМЫЙ ЭФФЕКТ:\n";
|
||
echo " Первое открытие папки: 3-5 секунд (как сейчас)\n";
|
||
echo " Повторное открытие: 0.05 секунды (из кеша) ⚡\n";
|
||
echo " Ускорение: в 60-100 раз!\n\n";
|
||
|
||
echo "=== ИТОГ ===\n";
|
||
echo "✅ Индексация fileId для файлов - работает (каждую минуту)\n";
|
||
echo "❌ Кеширование PROPFIND для папок - НЕ работает\n";
|
||
echo "💡 Нужно добавить кеширование PROPFIND результатов\n";
|