Skip to content

v5.9.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 10:37
· 67 commits to main since this release
49aa696

Added

  • The profiler suggests ->with() for a relation loaded one entity at a time, select(), hydrateAs() or
    enableResultCache() for a slow query or a large response, and the second-level cache for an entity found or loaded
    3 times or more.
  • A "Callers" tab of the profiler groups the queries by the line of the application sending them, the costliest
    first.
  • A "Replay" button of the profiler sends a query of the profile again and shows its response, in debug mode, for a
    query whose values are not masked (redact_query_values: false) and which is not a mutation. It needs the routes of
    the bundle.
  • The profiler options set the alerts of the profiler: max_queries, the queries of a request beyond which its
    toolbar turns yellow (50 by default, as Doctrine), max_query_time, the milliseconds waited for GraphQL beyond which
    it does, and repeated_queries, the times from which repeated queries, lazy loads and entities worth the
    second-level cache are reported (3 by default).
  • An "Export JSON" button of the profiler downloads the metrics, the queries and the findings of a profile, their
    values masked unless redact_query_values is false.

Changed

  • The timeline of the profiler shows the origin, the entity and the duration of each query, its hydration apart from
    the network, a graduated axis, and the time of the request before the first query.

Fixed

  • The time in GraphQL of the profiler and of its toolbar counts once the queries sent together, which the request
    waited for at the same time; their sum is shown apart.
  • The profiler describes the entities read by the queries sent after the response (a kernel.terminate listener, a
    streamed response), and marks these queries "after the response".
  • The profiler marks the queries of a sub-request (a fragment, a forward) with its path.
  • A profile keeps the detail of the first 500 queries only: the others are counted in the metrics and the alerts,
    without their text, variables, AST nor response, so that a page sending thousands of queries does not bloat it.