Записи из основной таблицы cdr_general (Asterisk) не попадают в таблицу модуля.
Причина — getHistoryData() модифицирует $this->cdrOffset по ссылке до сохранения записей.
Если сохранение падает с исключением, in-memory offset уже продвинут, и при следующей итерации записи пропускаются навсегда.
Lib/HistoryParser.php— методgetHistoryData()bin/ConnectorDB.php— методыsyncCdrData(),batchSaveCallHistory()bin/SyncRecords.php— вызовgetHistoryData()(адаптация к новому формату)Lib/Mp3TagService.php— ID3-теги и поддержка webm
- Файл:
Lib/HistoryParser.php - Сигнатура:
int &$offset→int $offset - Offset вычисляется локально в
$calculatedOffset - Возвращает
['data' => $resultRows, 'newOffset' => $calculatedOffset]
- Файл:
bin/ConnectorDB.php - Offset из
getHistoryData()сохраняется в$parsedOffset - Применяется к
$this->cdrOffsetтолько после успешногоbatchSaveCallHistory()
- Файл:
bin/SyncRecords.php - Извлечение
$historyResult['data']вместо прямого результата
- Файл:
bin/ConnectorDB.php $db->execute()обёрнут вtry/catch— при ошибке чанка логируем и продолжаем$record->save()обёрнут вtry/catch— при ошибке UPDATE логируем и продолжаем- Возвращается реальное количество успешных вставок/обновлений
- Файл:
bin/ConnectorDB.php - Sequential проверка стартует от
$oldOffset(оригинальный offset до синхронизации) - Итоговый offset =
max(sequentialMaxId, parsedOffset)
- Файл:
Lib/Mp3TagService.php - Проверка расширения файла: ID3-теги пишутся только для
.mp3 - Для
.webmи прочих форматов — пропуск тегирования, только symlink - Явная загрузка
getid3.phpпередgetid3_writetags(fix autoload) - Symlink создаётся с реальным расширением файла (не хардкод
.mp3)
Тестирование на serber@boffart.miko.ru
-
php -lдля всех изменённых файлов — OK - Откат offset на 100, первая синхронизация без Mp3TagService fix:
- Throwable
getid3.php MUST be included→ offset НЕ продвинулся (fix работает) - Повторная синхронизация через 10 сек — успешно (102 update)
- Throwable
- Откат offset на 100, синхронизация С Mp3TagService fix:
- Нет Throwable, Mp3TagsTime=0.03s, синхронизация с первой попытки
- Offset корректно 625069 → 625169 (+100)
- WebM: решено оставить без тегов, только symlink с читаемым именем