Составить список вложений: имя, размер и доступное действие

Фактические данные получены через расширение interbase от отдельной локальной базы Firebird. Собственная учебная таблица удалена после наблюдений.

Наблюдаемый результат программы
НаблюдениеРезультат
receipt-42.txt28 байт; Скачать
draft.txt0 байт; Скачать пустой файл
pending.pdfнет BLOB; Файл ещё не приложен
report.bin128 байт; Скачать
Доступных вложений3
Общий размер, байт156
Вызовов чтения тела при построении списка0
Строки и дополнительные наблюдения
{
    "listing": [
        {
            "name": "receipt-42.txt",
            "bytes": 28,
            "action": "Скачать"
        },
        {
            "name": "draft.txt",
            "bytes": 0,
            "action": "Скачать пустой файл"
        },
        {
            "name": "pending.pdf",
            "bytes": null,
            "action": "Файл ещё не приложен"
        },
        {
            "name": "report.bin",
            "bytes": 128,
            "action": "Скачать"
        }
    ],
    "existing_blobs": 3,
    "total_bytes": 156,
    "metadata_calls": 3,
    "body_read_calls_during_listing": 0,
    "raw_blob_ids_published": false,
    "counting_scope": "This count excludes preparation writes and concerns only the listing loop."
}

Самостоятельный запуск создаёт result.json с данными и metrics.json с проверками рядом с example.php.