Ограничить ожидание команды и отличить таймаут от пустого ответа

Фактические данные получены через SQLSRV от отдельного SQL Server. Созданные программой учебные таблицы удалены после чтения.

Наблюдаемый результат программы
НаблюдениеРезультат
QueryTimeout этой команды, секунд1
Искусственная задержка SQL, секунд3
Команда вернула falseда
Сохранена диагностика таймаутада
Новый SELECT на том же соединенииready
Строк после опыта1
Строки и дополнительные наблюдения
{
    "query_timeout_seconds": 1,
    "requested_wait_seconds": 3,
    "elapsed_seconds": 1.002,
    "saved_timeout_diagnostic": [
        {
            "SQLSTATE": "HYT00",
            "code": 0
        }
    ],
    "state_after_timeout": "ready",
    "row_count_after_timeout": 1
}

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